2

私は通常のテキストファイルを読んでいて、すべての単語を数値として別のテキストに書き込んでいます。行が終了すると、「改行文字 (\n)」が検索され、改行から続行されます。Ubuntu では完全に実行されますが、Windows (DevC++) では機能を操作できません。私の問題は、私が読んだ Windows のテキストに改行文字がないことです。手で新しい行を入れても、私のプログラムはそれを見ることができません。行末に文字を印刷したい場合、それはスペース (ascii = 32) であると表示され、行末だと思います。これが行末制御コードです。修正するにはどうすればよいですか? また、「キャリッジ リターン (\r)」という文字について読みましたが、それでも問題は解決しません。

c = fgetc(fp);
printf("%d", c);
fseek(fp, -1, SEEK_SET);
if(c == '\n' || c == '\r')
    fprintf(fp3, "%c%c", '\r', '\n');
4

2 に答える 2

2

テキスト ファイルを開いて改行変換を行う場合は"r""rb"

FILE *fp = fopen(fname, "r");

これは、テキスト ファイルに必要なバイナリ モードではなく、テキスト モードで開きます。Linux では違いはないように見えますが、Windows では次の\r\nように変換されます。\n

考えられる解決策は、ファイルから数値をint直接変数に読み込むことです。

int n;
fscanf(fp, "%d", &n);

改行があなたにとって重要な意味を持たない限り。

于 2014-05-21T18:29:45.270 に答える