我有最奇怪的事情发生,我不太确定为什么会发生。基本上我需要做的是使用 fgetc 逐字节获取简单 ASCII 文件的内容。奇怪的是它起作用了,但后来我又添加了几个字符,突然间它添加了一个不存在的换行符,并读取到文件末尾或其他内容。从字面上看,我所做的只是
do {
temp = (char*) checked_realloc (temp, n+1);
e = fgetc(get_next_byte_argument);
temp[n] = e;
if (e != EOF)
n++;
}
while (e != EOF);
然后检查我刚刚打印了每个字符
temp_size = strlen(temp)-1;
for(debug_k = 0; debug_k < temp_size; debug_k++){
printf("%c", temp[debug_k]);
}
它会正确输出所有内容,只是它添加了一个不在文件中的额外换行符。在此之前,我有
temp_size = strlen(temp);
但随后它以一些未知字节(打印的乱码)结束。我尝试了 strlen(temp)-2 以防万一,它适用于那个特定的文件,但后来我在末尾添加了一个额外的“a”,它又坏了。
老实说,我很难过。我不知道它为什么这样做。
编辑:checked_realloc 只是 realloc 但快速检查以确保我没有内存不足。我意识到这不是最有效的方法,但我更担心为什么我似乎在神奇地读取额外的字节。