C reading (from stdin) stops at 0x1a character

前端 未结 5 530
名媛妹妹
名媛妹妹 2020-12-06 15:39

currently I\'m implementing the Burrows-Wheeler transform (and inverse transform) for raw data (like jpg etc.). When testing on normal data like textfiles no problems occur.

5条回答
  •  失恋的感觉
    2020-12-06 16:06

    As you've noticed, you're reading from stdin in ASCII mode and it is hitting the SUB character (substitute, aka CTRL+Z, aka DOS End-of-File).

    You have to change the mode to binary with setmode while on Windows:

    #if defined(WIN32)
    #include 
    #include 
    #endif /* defined(WIN32) */
    
    /* ... */
    
    #if defined(WIN32)
    _setmode(_fileno(stdin), _O_BINARY);
    #endif /* defined(WIN32) */
    

    On platforms other than Windows you don't run into this distinction in modes.

提交回复
热议问题