왜 출력이 이런지 설명 부탁드립니다
조회수 579회
include
include
int main() { FILE *fp; char str[20];
fp = fopen("a.txt", "a+");
if (fp == NULL)
{
printf("파일을 만들지 못했습니다.\n");
return 1;
}
while (1)
{
printf("과일 이름 : ");
scanf("%s", str);
if(strcmp(str,"end")==0)
{
break;
}
else if (strcmp(str, "list") == 0)
{
fseek(fp, 0, SEEK_SET);
while (1)
{
fgets(str, sizeof(str), fp);
if (feof(fp))break;
printf("%s", str);
}
}
else
{
fprintf(fp, "%s\n", str);
}
}
fclose(fp);
return 0;
}
이코드를 실행시키면
왜 이렇게 되는건가요?? 과일이름을 원래 한개만 써야되는데 일부러 2개 3개 써봤는데 왜 과일이름이 두번나오고 3번 나오져??? 원리설명좀 ㅠㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
scanf 로 입력을 받을 때 버퍼 문제로 인해 개행문자 처리가 문제가 됩니다.
즉 버퍼를 비어줘야합니다.
아래의 링크에 이유와 해결방법이 잘 정리되어 있습니다.
-
댓글 입력