 
 
Нет. Еще и в Dos. 
 
Но, на самом деле, проблема встречается куда шире. Например, многие коммуникационные протоколы позволяют использовать, CR, LF, или CR/LF в качестве разделителя строки. При передаче по каналу CR может быть получен, но отработка LF может оказаться блокирующим вызовом. Поэтому правильный способ отработки — распозновать строку по CR, и взводить флажок (чтобы, если последует LF, его пропустить молча).
Я встречал в некоторых файлах Adobe CR CR в качестве ограничителя строки. До сих пор гадаю, где такая конвенция...
А пример программы… Я обычно делал что-либо в таком духе, но это все — совсем не posix. 
Код:
#include <stdio.h>
#include <conio.h>
int main(int argc, char** argv)
{
  int ch;
  do {
    ch = _getch();
    printf(" %02X", ch);
  } while (ch != 0x1B && ch != -1);
}
Сейчас, правда, погонял ее — грехов не видно. А может я и попутал чего. 
 
Дурной это тон, гонять scanf из файла. Проблем не оберешься.