我正在为文件写一些字符串,然后我回放它。这个,我在循环中做 实际上,它工作正常,但在文件的末尾,它复制了最后一个字符串中的一些字符。我如何摆脱额外的角色?
所以,我有一个循环,它将字符串写入文件,并在每次循环结束时将其倒回:
for循环{
的fputs( “字符串1 \ n” 个,文件);
的fputs( “字符串2 \ n” 个,文件);
的fputs( “STRING3 \ n” 个,文件);
的fputs( “stringLAST” ,file);
fseek(file,0,SEEK_SET);} //或倒带(文件);我得到了相同的结果。
结果我的文件看起来像这样:
字符串1
字符串2
STRING3
stringLASTstringLASTASTASTSTST
现在,我在stringLAST
字符串上有额外的字符。但我需要它看起来像这样:
字符串1
字符串2
STRING3
stringLAST
答案 0 :(得分:3)
您可能希望在重写之前将文件截断为零长度,如下所示:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
...
if (-1 == fseek(file, 0, SEEK_SET))
perror("fseek()");
if (-1 == ftruncate(fileno(file), 0))
perror("ftruncate()");
}