在文件中写入时,每次执行新的写入操作时,我都会生成几个空字符/ 00。 Bellow这是我解决这个任务的方法,但它不起作用。
文件内容:
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));
}
}
应该怎么做?
答案 0 :(得分:0)
fseek()
的第二个参数是基于第三个参数寻找相对或绝对的位置。 SEEK_SET
值表示您正在寻找-1
的绝对位置,我怀疑它是错误的。您可能打算使用SEEK_CUR
,使第二个参数偏离当前位置。检查fseek()
的返回是合适的。
也就是说,我会在迭代整个文件时保留自己的计数,并根据该计数进行截断,从而无需fseek()
和ftell()
。 (好吧,假设我不能只是首先消除NULL的写入 - 如果可能的话,这将是正确的过程。)