从文件中删除空字符

时间:2015-04-07 19:43:59

标签: c if-statement while-loop fseek fgetc

在文件中写入时,每次执行新的写入操作时,我都会生成几个空字符/ 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)); 
    }
}

应该怎么做?

1 个答案:

答案 0 :(得分:0)

fseek()的第二个参数是基于第三个参数寻找相对或绝对的位置。 SEEK_SET值表示您正在寻找-1的绝对位置,我怀疑它是错误的。您可能打算使用SEEK_CUR,使第二个参数偏离当前位置。检查fseek()的返回是合适的。

也就是说,我会在迭代整个文件时保留自己的计数,并根据该计数进行截断,从而无需fseek()ftell()。 (好吧,假设我不能只是首先消除NULL的写入 - 如果可能的话,这将是正确的过程。)