我正在使用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