Anfänger will Datei auslesen
-
Guten Tag!
Ich bin ein Anfänger was das Programmieren betrifft und komme nun trotz langer Suche nicht weiter.
Ich habe (durch ein C Programm) in einer Datei einen Pfad zu einer *.exe auf meinem Computer gespeichert. Dieser Pfad wird in meinem C Programm gespeichert, dazu verwende ich folgenden Code:
char path[256]; FILE* f; f=fopen("pathfile.txt","r"); fscanf(f,"%s", path); fclose(f);
Der Pfad ist also in dem String path gespeichert. Ich möchte mithilfe von diesem Pfad nun ein Programm starten, dazu würde ich diesen Code verwenden:
ShellExecute(NULL, "open", "test.exe", NULL, C:\Program Files\Test\, SW_NORMAL);
Nun würde ich gerne *C:\Program Files\Test* durch meinen String ersetzen, aber dies funktioniert nicht, kann es ja auch gar nicht! Mein Code:
ShellExecute(NULL, "open", "test.exe", NULL, %s, SW_NORMAL, path);
Der Compiler sagt, und da hat er ja auch Recht, error: too many arguments to function 'ShellExecuteA'|
Meine eigentliche Frage: Kann man den Compiler da irgendwie überlisten oder gibt es dafür eine ganz andere Möglichkeit?
-
Wer hat Dir denn diesen Schmarrn gezeigt?
So geht's besser:
ShellExecute(NULL, "open", "test.exe", NULL, path, SW_NORMAL );
mfg Martin
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
mgaeckler schrieb:
Wer hat Dir denn diesen Schmarrn gezeigt?
Ich? Ich habe vor ein paar Jahren das letzte mal was in C gemacht und mein Kopf dazwischen mit viiiiel anderem Kram zugemüllt. Damals habe ich zu jeder Kleinigkeit kleine Programme geschrieben und daraus habe ich mir dann diesen Teil erschlossen... Ich glaube ich arbeite in nächster Zeit mal wieder meine Kenntnisse mit einem Buch auf...
mgaeckler schrieb:
So geht's besser:
ShellExecute(NULL, "open", "test.exe", NULL, path, SW_NORMAL );
mfg Martin
Dankeschön...
-
%s liest nur bis zum ersten Whitespace (Leerzeichen, Tabulatoren, CR und LF)
Das gibt schon mal Probleme mit dem Leerzeichen bei Program Files.
Probier malfscanf(f,"%255[^n]", path);
-
DirkB schrieb:
%s liest nur bis zum ersten Whitespace (Leerzeichen, Tabulatoren, CR und LF)
Das gibt schon mal Probleme mit dem Leerzeichen bei Program Files.
Probier malfscanf(f,"%255[^n]", path);
Ich danke dir, allerdings gefällt mir mgaecklers Lösung besser. [edit: Ich wusste übrigens nicht, dass %s mur bis zum ersten Leerzeichen liest, danke für diese Info] Ich habe allerdings eine weiteres Problem:
Am Anfang des Programms kann der Benutzer zwischen ein paar verschiedenen Möglichkeiten wählen, unter anderem kann er eine Hilfe aufrufen. Nach dem Wählen von einer dieser Möglichkeiten wird das Programm nicht mehr benötigt, sprich es schließt sich automatisch. Das Problem? Das Programm schließt sich auch wenn nur die Hilfe aufgerufen wird... Besteht die Möglichkeit nach Abrufen der Hilfe das Programm von anfang an laufen zu lassen?
-
Was hat denn mein Hinweis mit dem vom mgaeckler zu tun?
Schau doch noch mal nach was ich geändert habe: Das einlesen von path
Oder meinst du dein kurzes Zwischenspiel mit dem %s in ShellExecute.
%s gibt es eigentlich nur bei der scanf- und printf-Familie.JFaron schrieb:
Besteht die Möglichkeit nach Abrufen der Hilfe das Programm von anfang an laufen zu lassen?
Ja, das nennt sich Schleife.
Da gibt es in C die
- for-Schleife
- while-Schleife
- do-while-Schleife
-
DirkB schrieb:
Was hat denn mein Hinweis mit dem vom mgaeckler zu tun?
Schau doch noch mal nach was ich geändert habe: Das einlesen von path
Oder meinst du dein kurzes Zwischenspiel mit dem %s in ShellExecute.
%s gibt es eigentlich nur bei der scanf- und printf-Familie.upps... Hatte vorhin nur kurz Zeit, sry!
DirkB schrieb:
Ja, das nennt sich Schleife.
Da gibt es in C die
- for-Schleife
- while-Schleife
- do-while-SchleifeIch erinnere mich...
Ich glaub' ich verzieh' mich kurz in eine Ecke und schäme mich