我怎样才能忽略某些字符的 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
通常此代码仅在输入为换行符时才会打印没有任何前面的字符。
如果扫描了某个字符,是否可以在 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
通常此代码仅在输入为换行符时才会打印没有任何前面的字符。