2016-10-05 13 views
0

ファイルが改行で終了するかどうかは、CFileを使用して調べる必要があります。 私が試してみました何: は2個の単位でバックポインタを移動CFileで改行(改行文字)を確認する

  • ファイルの末尾にファイルポインタ

    1. ポイントが
    2. チェックポインタがここ\r\n

    を指している場合私のコードです:

    cfile.SeekToEnd(); 
    cfile.Seek(-2, CFile::current); 
    char buffer[2]; 
    cfile.Read(buffer, 2); 
    if(buffer[0] == '\r' && buffer[1] == '\n') printf("Ended with line break!"); 
    else printf("Not ended with line break!"); 
    

    しかし、私が見つけたのは、私は\n文字とガベージ文字(204のような奇妙な値を持つ)。ドキュメントを通していくつかの研究の後、私はCFile::Readは単一の文字として\r\nを数えることが判明:テキストモードのファイルの場合

    、キャリッジリターン - ラインフィードのペアは、単一の文字としてカウントされます。

    ファイルポインタが明らかに2文字をカウントするので、私は混乱していますが、私は両方を得ることができません。 CFileでファイルの最後に改行をチェックする方法はありますか?

  • +0

    「cfile」の種類はわかりません。それは 'CFile'か、それとも' CStdioFile'のようなものですか?さて、最初の2行の代わりに 'cfile.Seek(-2、CFile :: end);'を呼び出すのはなぜですか? – IInspectable

    +0

    ああ、 'cfile.Seek(-2、CFile :: end);'も良い考えです。しかし、私はまだ同じ結果を得る。 Btw、私は 'CFile'を使っています。 – user3545752

    答えて

    0

    ファイルを開くときにCFile::typeBinaryを使用して問題を解決しました。

    CFile::typeText私の場合は望ましくない何か特別な処理の復帰改行コードのペア(たとえば、復帰されるガベージ文字を埋め込む)を行うようです。