fgetc를 사용하여 파일에서 문자열을 읽습니다. 문자열이 얼마나 오래 데이터를 보유해야하는 배열을위한 공간을 다시 할당해야하는지 알지 못합니다. 이를 위해 현재 배열이 꽉 찼을 때를 알아야합니다. 문자 배열을 읽은 후에 문자 배열이 null로 끝나는 지 확실하지 않습니다. 그래서 예를 들어 8 크기의 배열을 가지고 있고 fgetc는 제 9 번째 문자를 줄 것입니다. 배열의 크기가 현재 8 또는 9입니까? (8 문자 + \ 0 또는 8 문자 만). 테스트 할 수있는 방법이 있습니까? 그리고 \ 0이 없다면. 문자열을 읽었을 때 char 배열에 직접 추가해야합니까?String이 null로 끝나는 지 어떻게 알 수 있습니까?
3
A
답변
0
fgetc가 호출 당 하나의 문자를 읽고 문자열의 크기를 얻기 때문에 읽기 문자가 \ 0 또는 EOF에 도달했는지 확인해야합니다. \ 0 바이트가 표시되면 \ 0을 포함하여 모든 바이트를 복사해야합니다. \ 0없이 EOF에 도달하고 문자 카운터가> 0 인 경우 \ 0을 직접 추가해야합니다.
2
버퍼의 현재 크기와 문자를 추가하는 위치를 모두 추적해야합니다. 그 다음 위치가 버퍼 크기를 늘리는 데 필요한 크기와 같은지 확인하십시오. 종료 문자 인 \0
문자를 수용하려면 실제 크기는 +1
이어야하며 마지막 문자를 읽은 후에 항상 추가해야합니다.
1
fgetc를 사용하면 바이트 단위로 문자열을 보유하는 메모리를 구축하므로 종료 문자 '\ 0'의 추가 바이트가 필요하므로 메모리 할당이 총 문자열 길이 +1이되어야합니다.
"string"과 함께 작동하는 함수는 실제로 '\ 0'으로 끝나는 바이트 콜렉션을보고 있습니다. 그래서 예를 들어 "Hello World"는 'H' 'e' 'l' '' '' '' ''o ''r '' ''d ''0 '으로 메모리에 저장됩니다. 함수가 문자열 처리를 중단해야하는 시점을 알 수 있습니다.
관련 문제
- 1. 문자열이 특정 하위 문자열로 끝나는 지 어떻게 확인할 수 있습니까?
- 2. 게시판이 어디에서 끝나는 지 어떻게 지정할 수 있습니까?
- 3. null로 끝나는 문자열이란 무엇입니까?
- 4. null로 끝나는 두 문자열
- 5. iPhone이 어떻게 움직이는 지 어떻게 알 수 있습니까?
- 6. C++ null로 끝나는 문자열 좌절
- 7. null로 끝나는 문자열을 필요로하지 않는 strtol이 있습니까?
- 8. 스레드가 .NET Compact Framework에서 끝나는 시점을 어떻게 알 수 있습니까?
- 9. Silverlight 응용 프로그램에서 크기가 끝나는 시점을 어떻게 알 수 있습니까?
- 10. 자바 스크립트 비동기 함수가 끝나는 시점을 어떻게 알 수 있습니까?
- 11. 왜이 루프가 끝나는 지 이해할 수 없습니다.
- 12. C++ NULL로 끝나는 배열 segfault
- 13. 어떤 콘텐츠보기를 건드릴 지 어떻게 알 수 있습니까?
- 14. 어떤 Imageview를 두드리는 지 어떻게 알 수 있습니까?
- 15. BeanFactoryAware ?? 어떤 beanFactory를 사용할 지 어떻게 알 수 있습니까?
- 16. GUI를 사용할 때 Matlab이 바쁜 지 어떻게 알 수 있습니까?
- 17. 주어진 MAPI 메시지가 들어오고 나가는 지 어떻게 알 수 있습니까?
- 18. 어떤 버튼을 눌렀는 지 어떻게 알 수 있습니까?
- 19. 누가 소유권을 얻는 지 어떻게 알 수 있습니까?
- 20. 파이썬을 사용하면 직사각형과 모양이 겹치는 지 어떻게 알 수 있습니까?
- 21. ghs.google.com은 나를 어디에서 가리킬 지 어떻게 알 수 있습니까?
- 22. 포인터가 특정 구조를 가리키는 지 여부를 어떻게 알 수 있습니까?
- 23. Linux 프로세스가 무엇을 기다리는 지 어떻게 알 수 있습니까?
- 24. 무엇이 노드 프로세스가 멈추는 지 어떻게 알 수 있습니까?
- 25. 어떤 메뉴 항목이 Delphi에서 열리는 지 어떻게 알 수 있습니까?
- 26. Facebook이 내 페이지를 때리는 지 어떻게 알 수 있습니까?
- 27. js에서 어떤 요소가 이벤트를 발생시키는 지 어떻게 알 수 있습니까?
- 28. EnumWindows가 창 목록을 언제 끝내는 지 어떻게 알 수 있습니까?
- 29. 루비 스크립트를 사용하면 어떻게 달라지는 지 알 수 있습니까?
- 30. ios의 UIKeyboard에서 어떤 키를 누르는 지 어떻게 알 수 있습니까?
모든 표준 문자열 함수가 거기에있는 NULL 문자를 사용하므로 예를 추가하거나 이상한 문제에서 실행하게됩니다. – RageZ