Shift + Enter против Enter в консоли - PullRequest
4 голосов
/ 31 октября 2019

Я пытаюсь перехватить все символы, которые я ввел через мой поток stdin, кроме EOF. Я хочу ввести многострочный текст: каждая строка с \n в конце.

int getline(char s[])
{
    printf("Call-getline()\n");

    int c;
    int idx=0;

    while((c=getchar()) != EOF)
    {
        s[idx++] = c;
    }

    printf("\n-EOF found--\n");

    s[idx] = '\0';

    return idx;
}

Я не знаю, как избавиться от \n, который я получаю, когда нажимаю вводи мне было интересно, если shif+enter против enter alone имеет какое-либо значение. Я читал о том, что он делает в Microsoft Word: новый абзац против новой строки.

1 Ответ

3 голосов
/ 31 октября 2019

Ответ Удаление завершающего символа новой строки из ввода fgets () было связано в комментариях, которые показывают вам решение.

Однако я хочу отметить еще одну вещь здесь. Распространенным способом завершения ввода является нажатие Ctrl + D, которое отправит EOF в программу. Или, по крайней мере, большинство (все?) * Nix-терминалов. Но это специфическая деталь для используемого вами терминала, поэтому вам нужно прочитать документацию для вашего конкретного терминала.

Я нашел этот ответ, в котором рассказывается о том, как это сделать. на винде. К сожалению, ответ в основном заключается в том, что вы не можете сделать это хорошим способом.

...