不能在简单的 C 代码片段中使用 2 getchar() 函数
can't use 2 getchar() function in a simple C snippet code
我在编程方面有点菜鸟,尤其是在 C 语言方面。我正在尝试一些代码来了解有关 C syntax.here 我的问题的更多信息:为什么波纹管代码段中的第二个 getchar()
不起作用?我的意思是我想控制台等到我输入然后完成。
#include<stdio.h>
#include<curses.h>
int main() {
char ch = getchar();
getchar();
return 0;
}
PS:我用的是ubuntu17.10.
如评论中所述,您正在输入两个字符。字母a
和换行符(\n
)。显示第二个 getchar() 接受 \n
.
如果您想使用第二个 getchar(),那么在使用它之前请使用 fflush(stdin)
。
fflush(stdin) 通常会删除(刷新)这种类型的额外字符(在您的情况下 \n
)。或者你可以按照下面的方式做
#include<stdio.h>
#include<curses.h>
int main() {
char ch;
printf("Enter a charcter: ");
ch = getchar();
printf("\nyou typed the character ");
putchar(ch);
while ((getchar()) != '\n'); //fflush(stdin); /* use this*/
getchar();
return 0;
}
这里是“while ((getchar()) != ‘\n’);”读取缓冲区字符直到最后并丢弃它们(包括换行符)并在“scanf()”语句清除输入缓冲区并允许在所需容器中输入后使用它。
另请参阅以下链接。
- Replacement of fflush(stdin)
- Alternative to C library-function fflush(stdin)
- Using fflush(stdin)
- Clearing The Input Buffer In C/C++
我在编程方面有点菜鸟,尤其是在 C 语言方面。我正在尝试一些代码来了解有关 C syntax.here 我的问题的更多信息:为什么波纹管代码段中的第二个 getchar()
不起作用?我的意思是我想控制台等到我输入然后完成。
#include<stdio.h>
#include<curses.h>
int main() {
char ch = getchar();
getchar();
return 0;
}
PS:我用的是ubuntu17.10.
如评论中所述,您正在输入两个字符。字母a
和换行符(\n
)。显示第二个 getchar() 接受 \n
.
如果您想使用第二个 getchar(),那么在使用它之前请使用 fflush(stdin)
。
fflush(stdin) 通常会删除(刷新)这种类型的额外字符(在您的情况下 \n
)。或者你可以按照下面的方式做
#include<stdio.h>
#include<curses.h>
int main() {
char ch;
printf("Enter a charcter: ");
ch = getchar();
printf("\nyou typed the character ");
putchar(ch);
while ((getchar()) != '\n'); //fflush(stdin); /* use this*/
getchar();
return 0;
}
这里是“while ((getchar()) != ‘\n’);”读取缓冲区字符直到最后并丢弃它们(包括换行符)并在“scanf()”语句清除输入缓冲区并允许在所需容器中输入后使用它。
另请参阅以下链接。
- Replacement of fflush(stdin)
- Alternative to C library-function fflush(stdin)
- Using fflush(stdin)
- Clearing The Input Buffer In C/C++