• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[C++] Variablen im system() Aufruf

Status
Für weitere Antworten geschlossen.
C

Cryspy

Guest
Guten Morgen,
Wie kann ich beim system()-Aufruf Variablen "einbinden"???

Also in etwa so

Code:
char test[] = "Testtext";
system("Das ist nur ein ->und hier die Variable<-");
Das mit dem char-Array war nur ein Beispiel, sollte auch mit integern und so gehen.

mfg cryspy
 
Werbung:
Hey,

ersma vorweg...das hatten wir hier schon ;)

trotzdem:

Dafür gibts mehrere Möglichkeiten.
Auf jeden Fall musst du deinen Krahm immer in einen Char-String umwandeln.
Ich mach das immer so: (C++)
Code:
001:  #include <iostream>
002:  using namespace std;
003:  
004:  int main(){
005:  string befehl, variable;	// Initialisieren von 2 Strings
006:  	
007:  befehl = "firefox ";	// In den einen kommt der Befehl/nachricht
008:  	getline(cin, variable);	// Den anderen mit Daten füllen
009:  	
010:  befehl.append(variable);	// Die Daten an die Nachricht dranhängen
011:  	system(befehl.c_str());	// system() das komplette Ding übergeben
012:  return 0;
013:  }
Funktionieren tut das dann so:

Zeile 5: 2 Strings werden deklariert. In den einen kommt deine Message, der Befehl oder sonstwas.
In den anderen dann eine Variable, ein Attribut, Parameter, Argument, etc.

Zeile 7: der eine String kriegt nun den Inhalt 'firefox'
Zeile 8: Der andere wird jetzt eingelesen
Zeile 10: Die Variable wird jetzt an den Befehl drangehängt
Zeile 11: Das komplette teil wird in einen C-String(=char *) umgewandelt und ausgeführt.
system() erwartet const char*, daher muss man das halt umwandeln.

Wenn man nun was eingibt, wird der Firefox(insofern es dein Standartbrowser ist) mit dem Attribut gestartet, dass du eingegeben hast.

lg,

n1ob
 
Zuletzt bearbeitet:
Werbung:
Hallo,

die Variante von YpsilonZet wird nicht funktionieren. Nimmt man statt
Code:
system("Das ist nur ein " + test[]);
//folgendes
system("Das ist nur ein " + test);
wird der Code zwar compilieren, aber am Ende nicht die Strings konkatenieren, sondern lediglich zwei Pointer addieren.


@Cryspy: Hast du C++ oder willst du nen C-Code? In C kannste strcat zum konkatenieren verwenden. Für C++ hat N10B ja schon was gepostet.


N43
 
Code:
//sollte eigentlich beser geeignet sein
char homepage[50];
std::getline(cin, homepage);

system(sprintf("firefox http://%s", homepage));

mein c is nicht ganz so toll aber naja xD
 
Werbung:
C++ wäre nice...

Der Code von N10B sieht an sich gut aus, aber muss man für "string" nicht noch #include <string> (oder so was) machen???

By the way:
Mit diesem '+' kommt dann immer etwas wie" cannot add two pointers...", ich werd nochmal nach der ganzen Fehlermeldung schauen ;)
 
Ne, das geht auch ohne. Entweder gehört das zum standart, oder es ist irgendwo mitverlinkt.

..falls du aber das Bedürfnis hast es trotzdem reinzupacken - nur zu ;)
..im schlimmsten fall bläht das (nur) deine exe auf.

lg,
n1ob
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben