在循环中将字符串写入文件会在文件末尾添加额外的字符

时间:2013-05-17 14:28:15

标签: c gcc

我正在为文件写一些字符串,然后我回放它。这个,我在循环中做 实际上,它工作正常,但在文件的末尾,它复制了最后一个字符串中的一些字符。我如何摆脱额外的角色?

所以,我有一个循环,它将字符串写入文件,并在每次循环结束时将其倒回:

  

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

1 个答案:

答案 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()");
}