使用fseek和fwrite覆盖文件中的一行

时间:2015-02-21 00:22:45

标签: c fwrite fseek

我有一个文本文件,其中每一行都由" \ n"终止。像这样

0000
0000
0000
0000

现在,文件最初像上面一样启动,但是一行可以用另一行可变长度覆盖。我正在使用fseek()来设置流的位置指示器。我移动到一行并用例如0000代替1111没有问题。

现在假设我想用1111 1111替换第一行。我做了以下

char *str = "1111 1111\n";
fwrite(str, 1, strlen(str), file);

这样就删除第3行中的第2行和第1个字节

1111 1111
000
0000

这是什么原因?

1 个答案:

答案 0 :(得分:1)

如果您认为您的文件如下: " 0000 \ N0000 \ N0000 \ N0000 \ n"

更容易理解,当你覆盖第一行时,你真的会覆盖前n个字符。 这就是你的第二行消失的原因。