Code de débogage en C

Quelqu’un peut-il me dire ce qui ne va pas avec mon code et pourquoi il produit cette sortie?

Code:

int main(){ unsigned num; char response; do{ printf("Please enter a positive integer greater than 1 and less than 2000: "); scanf("%d", &num); if (num > 1 && num < 2000){ printf("All the prime factors of %d are given below: \n", num); printPrimeFactors(num); printf("\n\nThe distinct prime factors of %d are given below: \n", num); printDistinctPrimeFactors(num); } else{ printf("\nSorry that number does not fall between 1 and 2000.\n"); } printf("\n\nDo you want to try another number? Say Y(es) or N(o): "); getchar(); response = getchar(); } while(response == 'Y' || response == 'y'); // if response is Y or y then program runs again printf("Thank you for using my program. Good Bye!\n\n"); //if not Y or y, program terminates return 0; } 

Sortie:

 Please enter a positive integer greater than 1 and less than 2000: 1600 All the prime factors of 1600 are given below: 2 2 2 2 2 2 5 5 The distinct prime factors of 1600 are given below: 2 5 Do you want to try another number? Say Y(es) or N(o): yes Please enter a positive integer greater than 1 and less than 2000: All the prime factors of 1600 are given below: 2 2 2 2 2 2 5 5 The distinct prime factors of 1600 are given below: 2 5 Do you want to try another number? Say Y(es) or N(o): Thank you for using my program. Good Bye! 

Lorsque vous demandez si vous souhaitez répéter, vous ne lisez que le y , en laissant les es queue dans stdin. Lorsque vous lisez le nombre suivant, scanf tente de l’parsingr sous forme de nombre, échoue et renvoie sans modifier num . Lorsque vous demandez à l’utilisateur, vous devez graver toute la ligne.