fread함수 질문입니다.

조회수 1344회

//str[20] = '\0'; 이 부분을 입력하지 않으면 이상한 문자열이 출력되는데 fread함수는 마지막에 \0을 받아오지 않나요?

/******************************************************************************

Welcome to GDB Online.
  GDB online is an online compiler and debugger tool for C, C++, Python, PHP, Ruby, 
  C#, OCaml, VB, Perl, Swift, Prolog, Javascript, Pascal, COBOL, HTML, CSS, JS
  Code, Compile, Run and Debug online from anywhere in world.

*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *str;
    FILE *fp = fopen("a.txt", "r");
    str = (char *)malloc(21);


    fread(str, sizeof(char), 20, fp);
    **//str[20] = '\0';**
    printf("%s", str);

    fclose(fp);
    system("PAUSE");
    return 0;
}

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    fread는 binary값을 읽어오는 함수입니다.

    fread(str, sizeof(char), 20, fp);은 파일 위치 포인터의 현재 위치로부터 20바이트를 읽어다 str에 저장해 달라는 코드입니다.

    단순히 텍스트 파일의 한줄을 읽어오고 싶다면 fgets 함수를 써야 합니다.

    fread로 읽으면 딱 정해진 바이트만 읽어오고, fgets로 읽으면 현재 위치부터 '\n'까지 읽어 옵니다.

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

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

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

(ಠ_ಠ)
(ಠ‿ಠ)