2017-11-28 6 views
0

は、私はそれは、Windowsの\n\x1Aのための特別な処理を(下記参照)防ぎながらfopen(3)で第二引数で修飾bは、POSIXシステムでは効果がありませんことを学びました。Windowsでは ' x1A'はどのように特別なのですか?いくつかの参照<sup><a href="http://en.cppreference.com/w/c/io/fopen" rel="nofollow noreferrer">1</a>、<a href="http://en.cppreference.com/w/cpp/io/c/fopen" rel="nofollow noreferrer">2</a></sup>を読む

私はよく、テキストファイルは、改行にCRLFを使うよう\n(LF)は(すなわちprintf("\n")が実際に\r\n印刷します)Windowsで特別である方法を知っているが、どのように\x1A(SUB)特別なのですか?

fopen("D:\\foo.txt", "rb"); 
        ^

答えて

0

\x1A(多分限りバックCP/Mのような)、MS-DOSでエンドオブファイルマーカーとして使用するために使用するCtrl + Zです。

Microsoft documentationは、「b」モード(「t」モードの下でのみ)の下ではCtrl + Zについて言及していません。私はすぐにWindowsボックスを手元に持っていないので、簡単にチェックすることはできません。

+0

['_read'](https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/read)を参照してください。「[i] fでファイルを開いたテキストモードでは、ファイルの終わりのインジケータとして扱われるCTRL + Z文字が読み込み時に読み込みが終了します。マイクロソフトのCRTは、低レベルのPOSIX層(Windows API上に階層化されている、例えば 'ReadFile'のような高レベルの標準I/O API(例えば' fread')を実装しています。例えば 'NtReadFile ')。標準I/Oテキストモードのいくつかの振る舞いは、POSIXの低I/Oレベル(例えば、 '_O_TEXT'、' _O_WTEXT'などのモードを介して)で実装されています。 – eryksun

+0

また、OPに明白でない場合は、0x1Aは10進数の26です。ASCIIの制御文字1-26は、Ctrl +英字の対応する文字にマッピングされます.Zは26番目の文字です。 – eryksun

関連する問題