나는 큰 파일을 블록으로 읽어야하는 C 프로그램을 작성하고 있었다 (블록 당 16 자). 이를 위해 다음 코드를 작성했습니다.
while(fgets(temp2,16,fp)!=NULL)
{
printf("\n%d:%s, len = %d", cnt++, temp2, strlen(temp2));
}
그러나 읽기는 15 자뿐입니다. 이것에 무슨 문제가 있습니까? 어떻게해야합니까?
이것에 무슨 문제가 있습니까?
아무것도. 당신이 말한대로하고 있습니다. 개행 문자 나 파일 끝을 만나지 않는 한 최대 15 자까지 읽은 다음 마지막으로 쓰여진 바이트 바로 뒤의 바이트를 null로 종료합니다.
어떻게해야합니까?
에 대한 참조를fgets
읽어보십시오 .
char *fgets( char *str, int count, FILE *stream );
count - 1
주어진 파일 스트림 에서 최대 문자를 읽고 str에 저장합니다. 생성 된 문자열은 항상 널로 종료됩니다. 파일 끝이 발생하거나 개행 문자가 발견되면 구문 분석이 중지됩니다.이 경우 str에는 개행 문자가 포함됩니다.
문제가 줄 바꿈으로 구분 된 문자열이 아닌 문자 블록을 읽는 것에 대해 이야기하기 때문에 사용하고 싶었던 것은 fread
, 아니 었습니다 fgets
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다