char theInput[10];
long option;
int innerLoop = 1;
char *dunno;
while(innerLoop == 1){
printf("\nType '1' to get your change, '2' to select another item, or '3' to add more funds: ");
fgets(theInput, sizeof theInput, stdin);
option = strtol(theInput, &dunno, 10);
if(option == 1){
loop = 0;
innerLoop = 0;
}else if(option == 2){
loop = 1;
outerLoop = 1;
innerLoop = 0;
firstLoop = 0;
}else if(option == 3){
loop = 1;
innerLoop = 0;
outerLoop = 1;
firstLoop = 1;
}else{
printf("\nInvalid input, please try again.\n");
innerLoop = 1;
}
}
Le résultat de ce code est que lors de la première exécution, il imprime le "Type '1" pour obtenir "partie suivie par un saut de ligne suivi de "Entrée non valide, veuillez réessayer". sans prendre aucune entrée de la ligne de commande. Il imprime ensuite la première instruction printf, puis accepte une entrée et fonctionne. Il est destiné à imprimer la première déclaration puis attendre une entrée.Dans une boucle while, fgets() s'exécute en s'auto-prenant dans une nouvelle ligne en tant qu'entrée
Voici la sortie du terminal.
« Type « 1 » pour obtenir votre changement, « 2 » pour sélectionner un autre élément, ou « 3 » pour ajouter plus de fonds:. Entrée non valide, s'il vous plaît essayer à nouveau
Type « 1 » pour obtenir votre changez, '2' pour sélectionner un autre élément, ou '3' pour ajouter plus de fonds: "
Le code que vous avez publié n'imprime pas les éléments que vous mentionnez (par exemple, le type "C" pour obtenir votre modification, "partie"). Il est probable que l'erreur soit dans la partie de votre code que vous n'avez pas affichée. – nos
Merci pour votre réponse. C'est mon erreur de mettre à jour mon code en postant - je l'ai changé de C, N et A à 1, 2, 3 parce que je pensais que le traitement des entiers pourrait être plus facile. J'ai mis à jour le post afin que tout soit comme il fonctionne actuellement sur mon ordinateur. – Vorkos
Un code non affiché plus ancien utilisait une fonction d'entrée qui laissait un '' \ n'' dans 'stdin'. – chux