Mon application est essentiellement un shell qui attend une entrée de type cmd [x]
, où cmd
est constante et x
est facultative. Donc cmd 1
est légal ainsi que cmd
par lui-même - alors je suppose un paramètre par défaut pour x
.Facultatif lu à partir de STDIN dans C
Je fais ceci:
char cmd[64];
scanf("%s", cmd);
int arg;
scanf("%d", &arg); // but this should be optional
Comment puis-je lire le paramètre entier, et le mettre à une valeur par défaut si aucune est actuellement disponible dans l'invite? Je ne veux pas que l'invite attende une entrée supplémentaire si elle n'a pas été donnée dans la commande d'origine. J'ai essayé plusieurs versions en utilisant fgetc()
et getchar()
et en les comparant à EOF
mais en vain. Chaque version que j'ai essayé finit par attendre sur ce paramètre entier optionnel.
Facile, mais faux - oups, vous l'avez édité. –
Le second sscanf est inutile, si le premier a renvoyé 1, il a eu le même effet que le second sscanf. – Juliano
Si le premier a retourné 1, comment êtes-vous absolument, 100% sûr, dans tous les cas, compilateur, plate-forme, sachez qu'il n'a pas analysé 'arg' ok, mais barfed sur 'cmd'? Bien que 1 ou 2 sccanfs - Il est encore très sous-optimal, car vous voulez vraiment signaler les erreurs à l'utilisateur s'il a donné 2 arguments, mais le 2. n'a pas pu être analysé. – leeeroy