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. argvist 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.