Ich habe einen Code geschrieben, der die Hauptparameter anzeigen muss, aber wenn ich ihn kompiliert und in das Programm "*" eingegeben habe, wird meine Dateistruktur angezeigt. Der Befehl in cmd sieht folgendermaßen aus:program.exe 1 2 3 *
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const* argv[]) {
for (int i=0; i<argc; i++) printf("%s\n", argv[i]);
return 0;
}
Das Ergebnis ist:
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
Und meine Frage: Ist es möglich, das Programm zu zwingen, "*" zu drucken, anstatt Dateien aufzulisten? Danke im Rat
*
konvertiert "file1 file2 ..."
wird. Es ist nichts falsch mit Ihrem C-Programm (obwohl das Einschließen <stdlib.h>
nicht erforderlich ist). Um zu verhindern, dass die Shell den Stern konvertiert, verwenden Sie Anführungszeichen:program.exe 1 2 3 "*"
char const* argv[]
ist nicht richtig. Sie dürfen Formen von main () nicht selbst erfinden, das darf nur der Compiler. argv
ist eigentlich Lese- / Schreibspeicher, obwohl das Schreiben oft nicht die beste Idee ist.
*
wird von der Shell interpretiert, nicht vom Programm selbst. Verwenden Sie\*
oder"*"
, um das * an das Programm zu übergeben.