c - 从文件中删除空字符

标签 c if-statement while-loop fseek fgetc

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

相关文章:

javascript - 如果 JavaScript 中的条件总是失败

python - 我的程序不断出现错误 "division by zero"

regex - 正则表达式 while 循环内的代码块正在工作,但在手动终止之前不会显示结果

c - 尝试检查一个二维字符数组中第二个二维字符数组中的关键字

c - list 文件中的 requestExecutionLevel 和 CopyFile() 函数失败

javascript - Apps 脚本不比较 if 语句中的 2 个值

java - 如何断言包含以下内容的 if 语句

python导入名称文件并按字母顺序排序

c - 如何从 c 调用 opaque_wrapper 结构?

c - 将值传递给子进程处理程序