Scanf с пробелом в C - PullRequest
       21

Scanf с пробелом в C

0 голосов
/ 08 сентября 2018

У меня есть такая структура:

struct bye {
    char b;
    char y;
    char e;
}

и я хочу прочитать с scanf строку, которая содержит слово из 3 букв, но между собой существует одно и то же неизвестное число пробела.

Например: «b [n число пробелов] y [n количество пробелов] e», а затем вставьте:

struct bye word;

word.b = 'b' word.y = 'y' и word.e = 'e'

Я сделал что-то подобное, но это не работает:

typedef struct bye bye_s; 

bye_s setInput() {
    bye_s ret;
    char current_char;

    scanf("%c", &current_char);
    ret.b = current_char;

    do {
        scanf("%c", &current_char);
    } while (current_char == ' ');
    ret.y = current_char;

    do {
        scanf("%c", &current_char);
    } while (current_char == ' ');
    ret.e = current_char;

    return ret;
}

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Просто используйте

if (scanf("%c %c %c", &ret.b, &ret.y, &ret.e) != 3) {
   /* failed */
}

Любые пробелы в формате scanf означают пропуск любого количества пробелов во входных данных.

И никогда не забывайте проверять scanf возвращаемое значение!

0 голосов
/ 08 сентября 2018

Вы можете просто поставить один пробел в строке формата, который пропускает неограниченное количество пробелов: scanf("%c %c %c",&char1,&char2,&char3);

...