1

ファイルを読み取り、改行 (\n) を無視するコードを作成しようとしていますが、これまでのところ:

c = fgetc(fp);
for(int loop = 0; c != EOF; loop++)
{
    if((c != '\n') && (c != '\\'))
    {
        buffer[loop] = c;
    }
    c = fgetc(fp);
}

しかし、「\ n」ビットを無視しているようには見えません(「\」についてはわかりません)

コードのレイアウトについては申し訳ありませんが、このサイトは私のバージョンの Opera を気に入っていないようです :(

編集: ありがとう、私は約 6 時間連続でコーディングを行ってきましたが、インクリメントを完全に見落としていました。

\rについても知りませんでしたが、Linuxをuningしていますが、クロスプラットフォームを作成しようとしているので、これは役に立ちます。

4

2 に答える 2

8

これを試して

while ( (c = fgetc(fp)) != EOF )
{
  if ( c != '\n' && c != '\r' )
  {
    buffer[loop++] = c;
  }
}
于 2009-02-14T00:35:22.810 に答える
6

これを実行しているオペレーティング システムはどれですか? Windows の \n は 2 文字 (\r\n) です。改行のみを無視する場合は、2 番目の条件は必要ありません。

しかし、別の問題は、毎回ループ変数をインクリメントすることです! バッファに何かを追加する場合にのみ、「ルー​​プ」をインクリメントする必要があります! for(..) から「loop++」を取り除き、buffer[loop++] = c; に追加します。ほとんどの場合、バッファ内の '\n':s の代わりにランダムな文字が取得されます。たとえば、これはゼロである可能性があります。

于 2009-02-14T00:29:19.140 に答える