我如何知道字符串是否以 null 结尾?

plu*_*uck 5 c string

我正在使用 fgetc 从文件中读取字符串。因为我不知道字符串有多长,所以我需要为保存数据的数组重新分配空间。为此,我需要知道当前数组何时已满。我不太确定 char 数组在读取字符后是否以空终止。例如,我有一个大小为 8 的数组,fgetc 将给我第 9 个字符。现在数组的大小是8还是9?(8 个字符 + \0 或仅 8 个字符)。有办法测试一下吗?而如果没有\0。当我读完字符串后,我需要自己将它添加到char数组中吗?

Emi*_*dın 1

由于 fgetc 每次调用读取一个字符,因此要获取字符串的大小,您应该检查读取的字符是否为 \0 或达到 EOF。如果您看到 \0 字节,则应复制包括 \0 在内的所有字节。如果到达 EOF 时没有 \0 并且字符计数器 > 0,则您应该自己添加 \0。