2

行ごとにファイルにデータを書き込みたい。

   int main ()
   {
        char* mystring = "joe";
        int i  ;
        FILE * pFile;
        pFile = fopen ("myfile.txt", "wb");
        for(i = 0 ; i <  10 ; i++)
        {
            fprintf(pFile,"%s\n",mystring);
        }
        fclose (pFile);
        return 0;
  }

新しいデータが次の行に入るように、新しい行の特別な文字を使用しています。

問題は最後の行です。改行は必要ありません。

注: デモ用に for ループを使用します。実際の状況では、リンクされたリストを使用してデータを反復処理したため、長さはわかりません。

ファイルの最後の行を削除する方法を教えてください。

4

6 に答える 6

8

いくつかの簡単な答えがあります。

A. リストの最後に到達したら、ファイルを 1 つの改行文字で切り詰めます。

B.文字列のに改行を出力しますが、最初の行でない場合のみ:

if (i > 0)
    fputs("\n", pFile);
fputs(mystring, pFile);

forこれはループに依存していないことに注意してください。i最初の行だけを 0 にする必要があります。

于 2013-08-28T04:53:52.803 に答える
4

次のようなものがいいと思います。

fprintf (pFile, "%s%s", (i > 0 ? "\n" : ""), mystring);
于 2013-08-28T05:13:15.833 に答える
1

簡単な方法は、文字列の出力と改行の出力を別々のステートメントに分割してから、改行の出力を条件付けすることです。このようなもの;

for (i = 0; i < 10; i++)
{
    fprintf(pFile, "%s", mystring);
    if (i < 9) // Or whatever condition you need - could be "atEndOfList()" or whatever.
        fprintf (pFile, "\n");
}
于 2013-08-28T04:51:14.757 に答える
0

リンクされたリストを使用しているため、現在のアイテムに次のアイテムがあるかどうかを確認できます。含まれている場合は改行を出力し、含まれていない場合は最後の項目であるため改行を出力しません。

于 2013-08-28T05:44:18.387 に答える