Seite 1 von 1

C : Probleme mit Kommandozeilenparametern unter VS

Verfasst: Do Sep 19, 2013 3:09 pm
von Lone
Ich benutze Visual Studio Express 2012 und bin damit auch sehr zufrieden. Probleme gab es erst seit ich damit angefangen habe Programme zu schreiben, die Kommandozeilenparameter benötigen. Ich weiß mittlerweile wie ich diese bei Visual Studio eingebe und bei einem Testprogramm hat das auch problemlos geklappt.

Ich habe das folgende Beispiel aus einem Buch. Es soll von einer Datei in eine andere kopieren. Zuerst gibt man den Namen der zu kopierenden Datei an ( argv[1] ) und dann den Namen der Datei, in die kopiert werden soll ( argv[2] ).

Code: Alles auswählen

//main.c
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
	FILE *ein,*aus;
	int ch;
	if(argc != 3)
		exit(1);
	if((ein=fopen(argv[1],"rb"))==NULL)
		exit(2);
	if((aus=fopen(argv[2],"wb"))==NULL)
		exit(3);
	ch=fgetc(ein);
	while(!feof(ein)) {
		fputc(ch,aus);
		ch=fgetc(ein);
	}
	fclose(ein);
	fclose(aus);

	printf("\n\n");
	system("PAUSE");
	return 0;
}
Ich habe in dem Projekt-Ordner zwei Textdateien erstellt ( test1.txt (Inhalt: Das ist ein Test) und test2.txt). Das sind auch meine 2 Paramter die ich in Visual Studio eingebe. Nun starte ich den Debugger, die Konsole geht auf und scheint direkt zu system("PAUSE") zu springen. Bei den beiden Textdateien hat sich nichts getan.
Habe ich die Funktion des Programms missverstanden oder hat das mit Visual Studio zu tun?

Vielleicht kann mir einer von euch helfen :)

Re: C : Probleme mit Kommandozeilenparametern unter VS

Verfasst: Do Sep 19, 2013 3:26 pm
von Xin
Moin Lone,
Lone hat geschrieben:Ich benutze Visual Studio Express 2012 und bin damit auch sehr zufrieden. Probleme gab es erst seit ich damit angefangen habe Programme zu schreiben,
hehehe, da gehen die Probleme meistens los. :-D
Lone hat geschrieben:Ich habe in dem Projekt-Ordner zwei Textdateien erstellt ( test1.txt (Inhalt: Das ist ein Test) und test2.txt). Das sind auch meine 2 Paramter die ich in Visual Studio eingebe. Nun starte ich den Debugger, die Konsole geht auf und scheint direkt zu system("PAUSE") zu springen. Bei den beiden Textdateien hat sich nichts getan.
Habe ich die Funktion des Programms missverstanden oder hat das mit Visual Studio zu tun?
Ich denke, es hat auch nichts mit Kommandozeilen-Parametern zu tun.

Das Programm selbst gibt ja auch nichts aus (außer die beiden Leerzeilen), entsprechend ist das erste, was Du mitbekommst der aufruf von system().

Lass Dir doch beim Kopieren mal die Zeichen ausgeben, die Du kopierst.

Code: Alles auswählen

  while(!feof(ein)) {
      printf( "Kopiere Zeichen %c\n", ch );
      fputc(ch,aus);
      ch=fgetc(ein);
   }
Stell Deinem Quelltext Fragen und wenn die Antworten überraschend sind, dann weißt Du, dass hier was verkehrt läuft.
Lass Dir zum Beispiel auch mal argv[1] und argv[2] testweise ausgeben und kontrolliere, ob das alles so ist, wie Du es erwartest.

Re: C : Probleme mit Kommandozeilenparametern unter VS

Verfasst: Do Sep 19, 2013 5:02 pm
von Lone
Danke für die schnelle Antwort.

Ich habe mir argv[1] und ""[2] ,sowie die zu kopierenden Zeichen ausgeben lassen.
Das sah dann so aus. Trotzdem passiert mit test2.txt nichts.


test1.txt
test2.txt
Kopiere Zeichen D
Kopiere Zeichen a
Kopiere Zeichen s
Kopiere Zeichen
Kopiere Zeichen i
Kopiere Zeichen s
Kopiere Zeichen t
Kopiere Zeichen
Kopiere Zeichen e
Kopiere Zeichen i
Kopiere Zeichen n
Kopiere Zeichen
Kopiere Zeichen T
Kopiere Zeichen e
Kopiere Zeichen s
Kopiere Zeichen t
opiere Zeichen
Kopiere Zeichen

Kopiere Zeichen D
Kopiere Zeichen a
Kopiere Zeichen s
Kopiere Zeichen
Kopiere Zeichen i
Kopiere Zeichen s
Kopiere Zeichen t
Kopiere Zeichen
Kopiere Zeichen e
Kopiere Zeichen i
Kopiere Zeichen n
Kopiere Zeichen
Kopiere Zeichen T
Kopiere Zeichen e
Kopiere Zeichen s
Kopiere Zeichen t


Drücken Sie eine beliebige Taste . . .

Re: C : Probleme mit Kommandozeilenparametern unter VS

Verfasst: Do Sep 19, 2013 5:13 pm
von Xin
Du hast zwei Zeilen in Text1.txt stehen?

Also am Programm habe ich auch keinen Fehler gefunden, habe ich das ursprüngliche Programm mal unter Linux kompiliert:

Code: Alles auswählen

xin@prgn:~$ vi cpy.c
xin@prgn:~$ gcc cpy.c -o cpy
xin@prgn:~$ echo "Dies ist ein Test" > test1.txt
xin@prgn:~$ ./cpy test1.txt test2.txt


sh: PAUSE: not found
xin@prgn:~$ cat test2.txt
Dies ist ein Test
Sieht gut aus. PAUSE findet er natürlich nicht, das gibt's so unter Linux nicht.

Dein Programm ist also in Ordnung, die Frage ist also eher, wo hakt es bei Dir?

Wechsle doch mal in die Eingabe-Konsole, dann das Verzeichnis in das Projekt-Verzeichnis, das Du benutzt und ruf Dein Programm mal außerhalb von Visual Studio auf.
Vielleicht bearbeitest Du auch einfach die falschen test1.txt und test2.txt?!

Re: C : Probleme mit Kommandozeilenparametern unter VS

Verfasst: Do Sep 19, 2013 7:21 pm
von Lone
Ja ich hab 2 Zeilen reingeschrieben.

Ich nehme mal an das es der Compiler ist. Ich installiere gerade einen anderen.

Re: C : Probleme mit Kommandozeilenparametern unter VS

Verfasst: Do Sep 19, 2013 7:40 pm
von Xin
Lone hat geschrieben:Ja ich hab 2 Zeilen reingeschrieben.

Ich nehme mal an das es der Compiler ist. Ich installiere gerade einen anderen.
Ich habe hier Visual Studio 2010 Express installiert und das Programm funktioniert.

Bitte beachte, dass die test-Dateien nicht im "Debug"-Verzeichnis liegen müssen (sofern Du das nicht entsprechend konfiguriert hast), sondern im Projekt-Verzeichnis, also das Verzeichnis, in dem das Debug-Verzeichnis liegt.

Re: C : Probleme mit Kommandozeilenparametern unter VS

Verfasst: Do Sep 19, 2013 8:51 pm
von Lone
Wenn cih die textdateien in einen anderen Ordner packe findet er die nicht mehr.

Ich hab die Dateien im Ordner in dem auch main.c ist.

Und das Compilen mit Cygwin64 Terminal geht auch nicht bzw. dann muss ich net framworks wieder draufmachen damit cisual studio wieder geht...

Re: C : Probleme mit Kommandozeilenparametern unter VS

Verfasst: Do Sep 19, 2013 11:14 pm
von Lone
Ich weiß nicht wie ich es hinbekommen habe aber jetzt funktioniert es mit Visual Studio.
Den Code habe ich nicht verändert und auch die Einstellungen nicht.

Naja gut, trotzdem vielen lieben Dank für die Hilfe.

Re: C : Probleme mit Kommandozeilenparametern unter VS

Verfasst: Fr Sep 20, 2013 12:18 am
von Lone
Ich hab das Problem gefunden. Mein Antivirus Programm hat warum auch immer blockiert.