그래서 나는 몇 가지 testes했습니다 그리고 나는 사용자 입력이 Y/y 경우 다음 코드와 함께 그 루프 (나는 getchar()C getchar() 이상한 동작
#include <stdio.h>
#include <stdbool.h>
int main(int argc, char* argv[]) {
for(int i = 0; i < argc; i++)
printf("argv[%d] = %s\n", i, argv[i]);
char name[20];
printf("What's your name ? ");
gets(name);
char lastname[20];
printf("%s what's your last name ? ", name);
fgets(lastname, 20, stdin);
int age;
printf("%s %s what's your age? ", name, lastname);
scanf("%d", &age);
bool exit = false;
char c;
while (!exit) {
printf("Do you wish to exit the program ? (Y/N) ");
c = getchar();
getchar();
if (c == 'Y' || c == 'y')
exit = true;
}
printf("Have a nice day %s %s.\n", name, lastname);
return 0;
}
사람이 문제가 무엇인지 가르치 려 수 있습니다 : 그것은 사용자의 다음 입력)에 대한 준비가 될 것입니다, 그래서 다시 대기열에 \ n을 없애?
모든 경고와 디버그 정보 (예 :'gcc -Wall -g')로 컴파일하십시오. 그런 다음 디버거를 사용하십시오 (예 :'gdb') –
Y 다음에 Enter 키를 누르는 것을 잊었습니까? – Sayutee
읽는 모든 * char *를 검사하고 각각을 처리해야하며, 특정 호출에서 개행을받는 것으로 가정하지 마십시오. – hyde