fread함수 질문입니다.
조회수 1343회
//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 답변
-
fread는 binary값을 읽어오는 함수입니다.
fread(str, sizeof(char), 20, fp);
은 파일 위치 포인터의 현재 위치로부터 20바이트를 읽어다 str에 저장해 달라는 코드입니다.단순히 텍스트 파일의 한줄을 읽어오고 싶다면 fgets 함수를 써야 합니다.
fread로 읽으면 딱 정해진 바이트만 읽어오고, fgets로 읽으면 현재 위치부터 '\n'까지 읽어 옵니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력