覆盖txt文件中的单行

时间:2013-11-24 13:19:40

标签: c

我正在写一个写入txt文件的C程序。第一行是一个数字,我想定期更新。我遇到的问题是它从1开始,当我到达数字10时,它会覆盖文件中的下一个字符。 这就是我得到的:

之前:

9
hello

后:

10 
ello         

我想要这个:

10
hello

我该怎么做?提前致谢

PS:这是我的代码:

int nkv = 9;
char nkvst[10];
sprintf(nkvst, "%d\n", nkv);
fputs(nkvst, fp[3]);
fputs("hello", fp[3]);
fseek(fp[3], 0, SEEK_SET);
nkv = 10;
sprintf(nkvst, "%d\n", nkv);
fputs(nvkst, fp[3]);

2 个答案:

答案 0 :(得分:3)

简单的解决方案:如果您事先知道要存储在文件中的最大数字,请将您的号码存储在带有额外数字/空格的文件中(在您方便的时候)。

例如,如果您的号码不会高于999999,那么:

int nkv = 9;
char nkvst[10];
sprintf(nkvst, "%.6d\n", nkv);
fputs(nkvst, fp[3]);
fputs("hello", fp[3]);
fseek(fp[3], 0, SEEK_SET);
nkv = 10;
sprintf(nkvst, "%.6d\n", nkv);
fputs(nvkst, fp[3]);

答案 1 :(得分:1)

首先解决方案是避免在打开的文件中重写:

  1. 从整个文件中读取和存储数据
  2. 改变你需要的东西
  3. 使用新数据重写整个文件
  4. 如果你仍想弄乱你的档案,你可以用一些' '空格作为保留地写下你的号码:

    sprintf(nkvst, "%11d\n", nkv);
    

    如果您的号码为-2147483648,则需要11个字符。所以有11个字符填充设置为您安全。