2013-05-17 82 views
0

我正在向文件写入一些字符串,然后将其倒带。这,我正在做一个循环。
实际上,它工作得很好,但在文件末尾,它复制了最后一个字符串中的一些字符。我如何摆脱额外的字符?向字符串中的文件写入字符串将额外的字符放在文件末尾

所以,我有循环,在循环结束写入字符串文件,倒带它的每一次:

for循环{
的fputs(“字符串1 \ n”,文件) ;
fputs(“string2 \ n”,file);
fputs(“string3 \ n”,file);
fputs(“stringLAST”,file);
fseek(file,0,SEEK_SET);} //或倒带(file);我得到了同样的结果。

结果我的文件看起来是这样的:

字符串1
字符串2
STRING3
stringLASTstringLASTASTASTSTST

现在,我对stringLAST字符串的字符外。但我需要它看起来像这样:

字符串1
字符串2
STRING3
stringLAST

+1

他们可能是从以前的运行中遗留下来的。我看到你正在寻找和倒带。如果您在列出的代码之前立即打开输出文件(删除或截断它),它可能会正常工作。 –

+1

您是否检查错误?错误时,fput返回EOF。你有没有试过刷新文件?倒带时,它可能仍然在缓冲区中。 – stonemetal

+0

是的,我必须用'ftruncate(fileno(file),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()"); 
} 
+0

谢谢,工作得很好,但没有第一个if语句。包含第一个if语句时,整个文件变为空白。 –