我正在使用fgetc從文件中讀取字符串。因爲我不知道字符串需要多長時間,我需要爲應該保存數據的數組重新分配空間。爲此,我需要知道當前數組何時已滿。我不太確定char數組是否在讀取字符後終止。所以例如我有一個大小爲8的數組,fgetc會給我第9個字符。數組的大小現在是8還是9? (8個字符+ \ 0或只有8個字符)。有沒有辦法測試它?如果沒有\ 0。當我讀完字符串時,是否需要將它自己添加到char數組中?如何知道字符串是否爲空終止
3
A
回答
0
由於fgetc每次調用讀取一個字符,要獲取字符串的大小,您應該檢查讀取的字符是\ 0還是EOF到達。如果您看到\ 0字節,則應複製包括\ 0的所有字節。如果在沒有\ 0的情況下到達EOF並且字符計數器大於0,則應該自己添加\ 0。
2
您需要跟蹤緩衝區的當前大小和添加字符的位置。那麼如果該位置等於您需要增加緩衝區的大小。實際大小應爲+1
以容納終止的\0
字符,您必須始終在讀取最後一個字符後添加該字符。
1
當你使用fgetc的時候,你正在建立一個一個字節地保存字節的內存,所以你需要讓你的內存分配爲總字符串長度+ 1,因爲你需要額外的字節爲'\ 0'。
與「字符串」一起工作的函數實際上正在查看以'\ 0'結尾的字節集合。例如,「Hello World」在內存中存儲爲'H'''''''''''''''''''''''''''''''''''''。這就是函數如何知道何時停止處理字符串。
相關問題
- 1. 如何知道PHP中的字符串是否爲空?
- 2. 是否printf終止每個字符串與空字符?
- 3. SQL字符串空終止?
- 4. 空終止字符串
- 5. C字符串空終止
- 6. wcscat_s字符串不爲空終止
- 7. 我如何知道某些字符是否在字符串中?
- 8. 如何知道JCalendar是否爲空?
- 9. 如何知道表是否爲空?
- 10. 知道是否EditText爲空
- 11. Re2是否使用字符串大小或空終止?
- 12. 如何知道VBA中的字符串數組是空的?
- 13. 如何知道小數點是否終止?
- 14. 如何知道應用程序是否在iOS終止?
- 15. 如何知道線程執行是否終止?
- 16. 如何知道應用是否被用戶終止?
- 17. Wordnet如何知道字符串是否有效查詢字符串
- 18. 你知道如何解析字符串爲空<int>?
- 19. 儘管字符串有空終止字符,std :: string的長度是否一致?
- 20. 如何知道數組是否包含空字符串,但排除0
- 21. 如何知道字符串是否在MD5格式
- 22. :如何知道長字符串中是否存在單詞?
- 23. 如何知道一個字符串是否包含口音
- 24. C字符串的空終止
- 25. JavaScript WebSocket非空終止的字符串
- 26. 雙空終止的字符串
- 27. C:Eclipse/gdb和空終止字符串
- 28. 終止字符串
- 29. 如何知道給定的字符串是否是來自Java中另一個字符串的子字符串
- 30. 如何在字符串中添加空終止符?
所有的標準字符串函數都依賴一個NULL字符在那裏,所以是的,你必須添加它,否則你將運行在奇怪的問題 – RageZ