我怎样才能忽略某些字符的 scanf() ?

how can I ignore scanf() at certain characters?

如果扫描了某个字符,是否可以在 while 循环中忽略 scanf()

例如:

int i = 0;
char b = 32;

while (scanf("%c", &b) == 1) {
    if (b == '\n') {
        printf("r");
    } 
    i++;  
}

按下回车后的输出:“r”。 按空格+输入后的输出:“r”。但在这里我期望没有输出! 我只需要在按下回车键时输出,之前什么都不需要!

你可以用一个flag来表示换行之前是否有其他字符。类似于:

char b = 32;
int flag = 1;

while (scanf("%c", &b) == 1) 
{
    if (b == 'q') break;  // End program when q is pressed

    if (b == '\n') 
    {
        // Only print if the flag is still 1
        if (flag == 1)
        {
            printf("r");
        }

        // Set the flag to 1 as a newline starts
        flag = 1;
    }
    else
    {
        // Other characters found, set flag to 0
        flag = 0;
    }
}

输入类似

\n   // newline will print an r
 \n  // space + newline will not print anything
a\n  // a + newline will not print anything

通常此代码仅在输入为换行符时才会打印没有任何前面的字符。