Ho scritto un codice che deve visualizzare i parametri principali, ma quando l'ho compilato e digitato il programma "*" mostra la mia struttura di file. Il comando in cmd è simile al seguente: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;
}
Il risultato è:
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
E la mia domanda: è possibile forzare il programma a stampare "*" invece di elencare i file. Grazie in consiglio
*
viene convertito "file1 file2 ..."
dalla shell. Non c'è niente di sbagliato nel tuo programma C (anche se l'inclusione <stdlib.h>
non è necessaria). Per impedire alla shell di convertire la stella usare le virgolette:program.exe 1 2 3 "*"
char const* argv[]
non è corretto. Non puoi inventare forme di main () da solo, solo il compilatore può farlo. argv
è in realtà memoria di lettura / scrittura, anche se scrivere su di essa spesso non è la migliore idea.
*
ottiene interpretato dalla shell, non il programma stesso. Utilizzare\*
o"*"
per passare * al programma.