C 초보입니다 텍스트 파일 읽고 쓰기 질문입니다

조회수 455회

include

int main(void) { char name[10]; char sex; int age;

FILE *wfp = fopen("friend.txt", "wt");

int i;
for (i = 0; i < 3; i++)
{
    printf("enter name, sex, and age in order : ");
    scanf("%s %c %d", name, &sex, &age);
    getchar();
    fprintf(wfp, "%s %c %d", name, sex, age);
}

FILE *rfp = fopen("friend.txt", "rt");

int ret;

while (1)

{
    ret = fscanf(rfp, "%s %c %d", name, &sex, &age);
    if (ret == EOF);
    break;
    printf("%s %c %d\n", name, sex, age);


}
fclose(wfp,rfp);
return 0;

}

왜 항상 마지막 입력값만 세번 출력되는지 궁금합니다

  • 공부를 하시면 됩니다. 뭐 가르쳐줄 꺼리도 없는 기초입니다. 정말 납득이 안 되는 부분이 있다면, 이 부분을 나는 이렇게 생각하는데 맞는거냐 같이 질문하시면 됩니다. 어떤 부분이 어떻게 이해가 안 되나요? nowp 2019.12.10 23:52
  • 앗 질문 수정했습니다 generalcho123 2019.12.10 23:57

2 답변

  • 출력시에 for문안에서 그냥 printf("%s %c %d\n", name, sex, age);하지 말고 fread함수 혹은 fscanf로 fp에서 내용을 읽어야 제값을 얻을수 있습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 수정했는데 이제는 뭐가 문제일까요 generalcho123 2019.12.11 16:38
  • if (ret == EOF); 
    break;
    이 부분을
    if (ret == EOF)
        break;
    로 고치세요.
    

    그리고요 fclose()로 단번에 두개씩이나 닫는것은 처음보는것 같아요. 아마 갈라서 하나씩 하는게 좋을거에요.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)