写入文件时,每次执行新的写入操作时,我都会生成几个空字符/00。下面是我解决这个任务的方法,但它不起作用。
文件内容:
foo\00\00\00\00\00\00
代码方法:
int aux;
while((aux = fgetc(fp)) != EOF){
printf("%i\n", aux);
if(fgetc(fp) == '\00'){
fseek(fp, -1, SEEK_SET);
ftruncate(fileno(fp), ftell(fp));
}
}
这应该如何完成?
最佳答案
fseek() 的第二个参数是基于第三个参数要查找的相对或绝对位置。 SEEK_SET
值表示您正在寻找 -1
的绝对位置,我怀疑该位置会因错误而失败。您可能打算使用SEEK_CUR
,使第二个参数成为距当前位置的偏移量。检查 fseek()
的返回结果是适当的。
也就是说,我会在迭代文件时维护自己的计数,并根据该计数进行截断,从而不再需要 fseek()
和 ftell()
。 (嗯,这是假设我不能一开始就消除 NULL 的写入——如果可能的话,这将是正确的做法)。
关于c - 从文件中删除空字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29499958/