我正在写一个写入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]);
答案 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)
首先解决方案是避免在打开的文件中重写:
如果你仍想弄乱你的档案,你可以用一些' '
空格作为保留地写下你的号码:
sprintf(nkvst, "%11d\n", nkv);
如果您的号码为-2147483648,则需要11个字符。所以有11个字符填充设置为您安全。