C에서 fgetc 함수로 파일에서 한 줄을 읽으면 스택 오버플로가있을 수 있습니다. 일부는 특정 파일의 한 행에 ASCII 데이터의 거대한 행을 출력하는 프로그램을 작성했다고 가정합니다. C 프로그램의 해당 데이터를 화면에 표시하려면 어떻게해야합니까? 한 번에 100 자까지만 읽을 수는 있지만 특정 위치에서 어떻게 읽기 시작할 수 있는지 알지 못합니다.C로 긴 ASCII 파일 읽기
답변
read() 함수를 사용하여 한 번에 한 세트 크기 (예 : 100 바이트)로 읽을 수 있습니다. read()가 읽는 것이 아무것도 없음을 나타낼 때까지 계속 반복하면됩니다. read()는 읽은 바이트 수를 반환하므로 요청한 바이트 수보다 작은 바이트를 반환하면 완료되었음을 알 수 있습니다.
fseek() 및 ftell()에 문의하십시오.
는 전체 파일의 mmap mmap()
을보고 당신은 당신이 배열로 전체 파일을 읽을 경우와 같이 결과를 처리 할 수 있습니다. 메모리를 할당하지 않아도된다는 보너스가 있습니다.
날을 downvoted 누구든지, 정말 & 읽기를 추구 이유 당신의 설명은 동적으로 malloc()를 사용하여 문자의 배열을 할당 할 수 있습니다이
나는 투표를하지 않았지만 제 의견은 일반적인 문제 수업을 해결하지 않는다는 것입니다. 이 특정 경우에는 작동하지만 소켓, 외부 장치 등과 같은 문제는 정확히 동일하지 않습니다. 작전 중 상대적인 경험이없는 것으로 보이는 것을 감안할 때, 준비가되어 있지 않으면 그를 혼란에 빠뜨릴 수있는 일을 제안하는 것보다 모범 사례를 가르치는 것이 낫습니다. – Duck
에 대한 mmap를보다 더보고 싶어요, 다음 파일의 문자를 읽어 fgetc()를 사용하여 문자로. 버퍼의 끝에 도달하면 realloc()을 호출하여 버퍼를 확장 한 다음 계속 문자를 읽습니다. 이렇게하면 유일한 오류는 "메모리 부족"오류입니다.
char *buffer = malloc(200);
unsigned int buffer_size = 200;
unsigned int current = 0;
char read;
do
{
read = fgetc(stream);
if (current >= buffer_size - 1)
{
buffer_size += 200;
buffer = realloc(buffer, buffer_size);
}
buffer[current++] = read;
}
while (read != '\n');
buffer[current++] = '\0';
(위의 코드에서 누락 : 메모리 부족 조건 처리 realloc과의 리턴 값을 확인)) (
- 1. 긴 긴 파일 읽기
- 2. 파이썬에서 ASCII 파일 읽기 (numpy-array?)
- 3. ASCII 외부 문자 읽기
- 4. 문자와 그 ASCII 코드 (C로 인쇄)
- 5. Objective-C로 SWF 헤더 읽기
- 6. C에서 Excel 파일 읽기
- 7. 파일에서 C로 된 문자열로 복수 라인 읽기
- 8. Objective-C로 파일 생성
- 9. C에서 C로 파일 전처리 이식
- 10. 읽기 파일
- 11. Windows에서 C로 된 파일 검색
- 12. Matlab에 C로 작성된 이진 파일 가져 오기
- 13. Windows에서 긴 파일 이름 대 긴 파일 이름
- 14. 파일 업로드시 확장 ASCII 처리
- 15. 긴 클릭시 파일 저장
- 16. 파일 읽기/쓰기 빠른 파일 읽기/쓰기
- 17. Microsoft.VisualBasic.FileIO.TextFieldParser가 ± Ascii 241을? Ascii 63
- 18. 파일 읽기/쓰기 문제
- 19. 프로젝트 별 읽기 전용 파일을 C로 구성하는 방법 #
- 20. 브라우저에 물음표가있는 긴 파일 이름보기
- 21. 파일 공유가없는 원격 파일 읽기
- 22. 파일 읽기 : feof() 이진 파일
- 23. 읽기 이진 파일 파일 형식
- 24. 리눅스와 C로 직렬 포트로 파일 보내기
- 25. MiniXML을 사용하여 C로 XML 파일 구문 분석
- 26. Zip 파일에있는 파일 수 (C로 계산) #
- 27. 암호가 C로 표시된 openssl을 사용하여 파일 암호화
- 28. Xcode에서 C로 파일 I/O를 수행하는 방법?
- 29. 파일 트리가 C로 가득 차 있다면 삭제하십시오
- 30. 어떻게 ASCII 파일 (C++)에서 숫자를 읽을
당신이 FREAD 뜻을? –
fread()는 특정 위치에서 읽을 수 있습니까? 아니! –
Fread를 사용하면 특정 위치에서 읽을 수 있습니다. fread()는 항상 파일의 '현재 위치'에서 읽습니다 (특정이며 fseek로 수정할 수 있음). –