getchar () et scanf () ignorés en C

J’écris actuellement un programme qui va copier ou append le texte d’un fichier dans un autre. Mon problème survient lorsque l’utilisateur est invité à indiquer s’il souhaite écraser ou append le fichier. Scanf () et getchar () sont tous deux ignorés. J’ai essayé d’utiliser de nombreuses combinaisons de getchar () et de scanf () avec fflush (stdin) et de vérifier que tous les fichiers que j’avais ouverts sont fermés, mais je ne peux toujours pas entrer de sélection.

La section de code spécifique contenant la première invite est ici.

`/****************PROMPT FOR OVERWRITE****************/ printf("Would you like to overwrite the Destination File?\n"); printf("1=NO,2=YES="); scanf("%d", &overwriteAnswer); if(overwriteAnswer == 2) { ` 

Ce scanf () ou, quand j’ai utilisé getChar (), est simplement ignoré et est généralement rempli avec un nombre négatif différent chaque fois que le code est exécuté.

Le code complet suit

  if((infile = open(argv[1], O_RDONLY)) == 0) { /****************INPUT FILE OPENED****************/ printf("%s open\n",argv[1]); if ((outfile = access(argv[1], F_OK)) == 0 ) { /****************PROMPT FOR OVERWRITE****************/ printf("Would you like to overwrite the Destination File?\n"); printf("1=NO,2=YES="); scanf("%d", &overwriteAnswer); if(overwriteAnswer == 2) { printf("Overwriting Destination File\n"); } 

Toute aide ou conseil est grandement apprécié.

Je ne comprends pas pourquoi vous n’utilisez pas fflush comme ça:

  printf("\nWould you like to append the Destination File?\n"); printf("1=NO,2=YES="); fflush(stdin); scanf("%d", &appendAnswer); 

MODIFIER:

Si fflush(stdin) ne fonctionne pas, essayez d’imposer à scanf de lire les nombres de la manière suivante:

  // additional variables char ch; // just a char to read from stream int wasNumber; // flag of successful scanf execution do{ wasNumber = 0; // ask for input printf("\nWould you like to append the Destination File?\n"); printf("1=NO, 2=YES : "); // read mumber wasNumber = scanf("%d", &appendAnswer); // clean the input bufer if it has not number if( wasNumber == 0 ) { while( getchar() != '\n' ); // read till the end of line } }while(wasNumber != 1 || appendAnswer < 1 || appendAnswer > 2);