J'essaie d'obtenir des entrées de l'utilisateur et fgets saute la toute première entrée. Je sais que la raison est fgets lit le « \ n » de la déclaration précédente ou du moins je pense que c'est la raison, mais je ne peux pas sembler fixerC fgets ignore l'entrée de l'utilisateur, même lors du vidage du tampon
Notez que cela fait partie d'un projet plus vaste
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000
int main(void) {
char content[MAX];
char content2[MAX];
char content3[MAX];
char content4[MAX];
char content5[MAX];
char input[4];
char input2[4];
printf("Do you want to continue yes/no?\n");
fgets(input, 4, stdin);
if (strncmp (input, "no", 2) == 0) {
break;
}
else if (strncmp (input, "yes", 3) == 0) {
fflush(stdin);
printf("Country:\n");
fgets(content, MAX, stdin);
printf("Province/state: \n");
fgets(content2 ,MAX, stdin);
printf("Postal/zip code:\n");
fgets(content3 ,MAX, stdin);
printf("Company:\n");
fgets(content4 ,MAX, stdin);
printf("Email:\n");
fgets(content5 ,MAX, stdin);
}
C'est exactement ce qui se passe. La solution la plus simple serait d'augmenter la taille de 'input'. Vous voulez * que * appelez 'fgets' pour ramasser la nouvelle ligne à la fin de oui/non – StoryTeller