while 문에서 엔터키 누르면 break하는 코딩인데 엔터눌러도 안되네요...
글쓴이: 익명 사용자 / 작성시간: 일, 2020/05/31 - 8:13오후
#include
#include
void main(void) {
char name[20];
int num, kor, eng, math, science;
FILE* fp;
fp = fopen("test.txt", "w");
while (1) {
printf("성명을 입력하세요(끝내려면 엔터키를 입력하세요):");
scanf("%s", name);
if (name == '\n')
break;
fprintf(fp, "%s\n", name);
printf("학번, 국어, 영어, 수학, 과학 순으로 입력하세요:");
scanf("%d %d %d %d %d",&num,&kor,&eng,&math,&science );
fprintf(fp, "%d %d %d %d %d", kor, eng, math, science);
}
fclose(fp);
}
Forums:
scanf 함수 쉽지 않은 함수네요.
c 프로그램 배우면 printf 다음으로 배우는 함수가 scanf 일텐데 미묘하고 어려운 문제가 있네요.
버퍼 관련 문제인데요.
https://stackoverflow.com/questions/7898215/how-to-clear-input-buffer-in-c
참고하시면 도움 되실 듯.
kldp에서 소스코드는 code 태그 안에 써야 제대로 보입니다.
세벌 https://sebuls.blogspot.kr/
간단합니다.
간단합니다.
"%s"
를 이용하여scanf
으로 입력받은 name에는 결코 개행문자가 남아있을 수 없기 때문입니다.scanf
에"%s"
를 지정했을 경우,scanf
는 공백이 아닌 문자를 발견할 때까지 모든 문자를 무시해 버립니다.이 문제는 성명을 입력받을 때
gets
혹은fgets
함수를 사용하면 일단은 조치가 가능합니다만, 그렇게 한다고 문제가 완전히 해결되는 것도 아니지요.글쎄요. 일단은 "어떤 형태의 입력을 가정하는지", 그리고 "사용자가 의도와 다르게 입력할 경우 어떻게 조치할 것인지"를 깊게 생각해보는 게 좋겠습니다. 사용자 입력 처리는 만만한 일이 아니지요.
댓글 달기