Чтение \r (возврат каретки) vs \n (новая строка) из консоли с помощью getc?

Я пишу функцию, которая обычно ждет, пока пользователь нажмет «ввод», а затем что-то делает. То, что я обнаружил, что работает при тестировании, приведено ниже:

#include <stdio.h>

int main()
{
        int x = getc(stdin);
        if (x == '\n') {
                printf("carriage return");
                printf("\n");
        }
        else {
                printf("missed it");
                printf("\n");
        }
}

Вопрос, который у меня есть, и то, что я сначала пытался сделать, заключалось в следующем: if (x == '\ r')но при тестировании , программа не поймала меня на вводе. '\n', кажется, соответствует тому, что я нажимаю Enter из консоли. Может кто-нибудь объяснить разницу? Кроме того, чтобы проверить, напишите его как , если... == "\n"будет означать литерал строки символов? т. е. пользователь буквально должен ввести "\n"из консоли, правильно?

23
задан Whymarrh 10 November 2014 в 23:42
поделиться