0

ファイルにいくつかの文字列を書き込んでから、巻き戻します。これ、私はループでやっています。
実際には問題なく動作しますが、ファイルの最後で、最後の文字列からいくつかの文字が複製されます。余分な文字を取り除くにはどうすればよいですか?

したがって、文字列をファイルに書き込み、ループの最後に毎回巻き戻すループがあります。

for loop{
fputs("string1\n",file);
fputs("string2\n",ファイル);
fputs("文字列3\n",ファイル);
fputs("stringLAST",ファイル);
fseek(file,0,SEEK_SET);} // または rewind(file); を使用 同じ結果が得られます。

その結果、私のファイルは次のようになります。

string1
string2
string3
stringLASTstringLASTASTASTSTST

今、文字列に余分な文字がありstringLASTます。しかし、私はそれが次のように見える必要があります:

string1
string2
string3
stringLAST

4

1 に答える 1

3

次のように、ファイルを書き換える前に長さ 0 に切り詰めたい場合があります。

#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()");
}
于 2013-05-17T14:34:18.567 に答える