c ++ Linux Systembefehl

7

Ich habe das folgende Problem:

Ich verwende in meinem Programm diese Funktion:

%Vor%

es funktioniert gut.

Aber ich möchte keinen konstanten Wert haben. Ich tue es so:

%Vor%

Ich überprüfe meinen String:

%Vor%

Ja, es ist richtig. aber system funktioniert in diesem Fall nicht und gibt -1 nicht zurück. Ich drucke nur String!

Wie kann ich eine Variable wie eine ganze Zahl übertragen, die in einer Datei wie Integer ausgegeben wird, aber keine Zeichenkette?

Also möchte ich die Variable int a haben und ich möchte den Wert einer mit Systemfunktion in der Datei ausgeben. Ein echter Pfad zu meiner Datei.txt ist / proc / acpi / video / NVID / LCD / Helligkeit. Ich kann nicht mit fprintf schreiben. Ich weiß nicht warum.

    
Tebe 28.06.2011, 13:06
quelle

9 Antworten

9

Sie können Zeichenfolgen nicht verketten, wie Sie es versuchen. Versuchen Sie Folgendes:

%Vor%     
Constantinius 28.06.2011, 13:11
quelle
8

Die Funktion system benötigt eine Zeichenfolge. In Ihrem Fall verwendet es den Text * curr_val_str * und nicht den Inhalt dieser Variablen. Anstatt sprintf zu verwenden, um nur die Zahl zu generieren, verwenden Sie sie, um den gesamten Systembefehl zu generieren, den Sie benötigen, d. H.

%Vor%

Stellen Sie zuerst sicher, dass der Befehl groß genug ist.

    
borrible 28.06.2011 13:10
quelle
7

Der Befehl, der in Ihrem Fall tatsächlich (fälschlicherweise) ausgeführt wird, ist:

%Vor%

Stattdessen sollten Sie Folgendes tun:

%Vor%     
Igor Oks 28.06.2011 13:11
quelle
4
%Vor%

man snprintf

    
e.dan 28.06.2011 13:10
quelle
2

Der richtige Weg wäre ähnlich:

%Vor%     
gulyan 28.06.2011 13:11
quelle
2

einfach nicht. :)

Warum greifen Sie auf system() für solch eine einfache Operation zurück?

%Vor%     
Vinicius Kamakura 28.06.2011 13:26
quelle
2

Haben Sie darüber nachgedacht, C ++ 's Iostreams-Funktion zu verwenden, anstatt auf echo auszuweichen? Zum Beispiel (nicht kompiliert):

%Vor%

Alternativ muss der Befehl, den Sie an system übergeben, vollständig formatiert sein. Etwas wie das:

%Vor%     
Mark B 28.06.2011 13:30
quelle
1

Verwenden Sie snprintf , um Sicherheitsprobleme zu vermeiden.

    
martsbradley 28.06.2011 13:13
quelle
0

Wie wäre es mit std::string & amp; std::to_string ...

%Vor%     
marc 13.03.2016 13:53
quelle

Tags und Links