J'essaie d'obtenir une entrée dans un tableau, jusqu'à ce qu'un utilisateur entre -1 pour quitter le mode d'entrée.Code C suspendu à l'instruction scanf()
Quelque chose d'étrange se produit dans ce bloc de code quand un -1 est entré mais seulement après avoir entré au moins deux valeurs.
#define ARRAYSIZE 100
int input[ARRAYSIZE];
int i=0;
do {
printf("Enter data #%d or -1 to exit: ", i);
scanf("%d", &input[i]);
} while(input[i++] != -1 && i<ARRAYSIZE)
Le code va simplement se bloquer indéfiniment. J'ai compilé et exécuté sur deux architectures séparées, mais le problème n'apparaît pas lorsqu'il est exécuté dans gdb. L'insertion d'instructions d'impression a révélé que le code est en effet suspendu à l'instruction scanf.
Est-ce que quelqu'un a une idée de ce qui pourrait être à l'origine de cela?
Euh, est-il pendre encore après avoir frappé "entrer"? Est-ce que "input []" est déclaré être un tableau d'entiers avec un ou plusieurs éléments "int"? Est-ce que "i" est initialisé à 0 avant d'entrer dans la boucle? – paulsm4
Oui, merci J'ai modifié la question pour clarifier cela –
Qu'est-ce que l'entrée? Pourquoi ne pas juste 'input [i ++]! = - 1' comme vérification de sortie? – asheeshr