Поведение scanf при чтении строк в C - PullRequest
1 голос
/ 20 февраля 2020

Я хотел бы знать, что компилятор делает с пробелами, символом новой строки при использовании scanf ("% s"). Я знаю, что scanf ("% s") не может читать пробелы и символы новой строки.

Например, если я введу

hi          question

или

hi

        question

scanf (" % s ") читает его без проблем.

Ниже приведен код, на который я ссылаюсь

#include <stdio.h>

int main () {
    char str [2][50];
    scanf("%s", str[0]);
    scanf("%s", str[1]);
    printf("%s\n", str[0]);
    printf("%s\n", str[1]);
    return 0;
}

1 Ответ

1 голос
/ 20 февраля 2020

онлайн-документация по scanf:

Символ пробела: функция будет считывать и игнорировать любые символы пробела, встречающиеся перед следующим непробельным символом (символы пробела включают пробелы, символы новой строки и символы табуляции - см. isspace). Один пробел в строке формата проверяет любое количество пробельных символов, извлеченных из потока (включая ни одного).

source

...