что читается scanf("%*c")?

что читается scanf("%*c")?


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Эта конструкция считает из входного потока любой символ и никуда его не сохраняет. То есть это способ пропустить один символ.

Для примера прочитаем каждый второй символ:

#include <stdio.h>

int main() {
    char c;
    while (scanf("%*c%c", &c) == 1) {
        putc(c, stdout);
    }
}
$ gcc scanf_c.c

$ echo "Hello, world!" | ./a.out 
_e_l_,_w_r_d_

$ echo " Hello, world!" | ./a.out 
_H_l_o_ _o_l_!
$

P.S. Я поправил ответ, так как ошибочно написал что %*c пропускает пробельные символы. Это не так. Чтобы пропустить пробелы в формат надо явно вставить пробел:

#include <stdio.h>

int main() {
    char c;
    while (scanf(" %*c%c", &c) == 1) {
        printf("_%c", c);
    }
}
$ gcc scanf_c_skipws.c 

$ echo "Hello, world!" | ./a.out
_e_l_,_o_l_!
$ echo " Hello, world!" | ./a.out
_e_l_,_o_l_!
$ echo "   Hello,   world!" | ./a.out
_e_l_,_o_l_!
$

P.P.S. Спасибо avp за комментарий.

→ Ссылка