は、私はそれは、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");
^
['_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
また、OPに明白でない場合は、0x1Aは10進数の26です。ASCIIの制御文字1-26は、Ctrl +英字の対応する文字にマッピングされます.Zは26番目の文字です。 – eryksun