J'ai écrit un code qui doit afficher les paramètres principaux, mais quand je l'ai compilé et tapé dans le programme "*" montre ma structure de fichier. La commande en cmd ressemble à ceci: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;
}
Le résultat est:
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
Et ma question: est-il possible de forcer le programme à imprimer "*" au lieu de lister les fichiers. Merci en conseil
*
est converti "file1 file2 ..."
par votre shell. Il n'y a rien de mal avec votre programme C (bien que l'inclusion <stdlib.h>
ne soit pas nécessaire). Pour empêcher le shell de convertir l' étoile, utilisez des guillemets:program.exe 1 2 3 "*"
char const* argv[]
n'est pas correct. Vous ne pouvez pas inventer vous-même des formes de main (), seul le compilateur peut le faire. argv
est en fait de la mémoire de lecture / écriture, même si y écrire n'est souvent pas la meilleure idée.
*
obtient interprété par le shell, pas le programme lui-même. Utilisez\*
ou"*"
pour passer le * au programme.