文字 10 は改行 ( \n
) です。文字 13 はキャリッジ リターン ( \r
) です。Windows の行末記号は、通常、キャリッジ リターンとそれに続くラインフィードです。UNIX/Linux では、通常、行末記号は単なる改行です。Mac OS では、これは単なるキャリッジ リターン IIRC でしたが、OS X ではそうではなくなった可能性があります (ボンネットの下に UN*X があるため)。
@jazzbassrob が指摘しているように、このファイルは Windows システムで作成された可能性があります。
または、Windows システムで実行している場合は、I/O ライブラリ関数の一部の実装によって、UNIX スタイルの行末文字が Windows スタイルに変換されると思います。
したがって、他の投稿者が指摘したように、出力はおそらく正しいでしょう。
編集:への呼び出しから を
削除してみてください。ファイルをバイナリモードで開きます。「テキスト」モードでは、つまり、キャリッジ リターンを破棄できます。b
fopen()
fopen(FILE_NAME, "r")
fgetc()
編集2:テキストモードでは、行末記号は改行に「正規化」する必要があります(@DevSolarが指摘しているように)。一方、バイナリ モードでファイルを開く場合は、特定の文字が行末記号であると想定したり、それに依存したりしないでください。(入力ファイルの作成を制御しない限り、ある形式から別の形式への変換などに特に関心があります。)