我写了一个小程序来练习使用getchar()获取用户输入,并使用c中的putchar()输出。
我想让我的程序做什么:我希望程序要求用户输入一个字符,将其存储在一个字符变量中,并将其打印出来。然后我想让它要求用户输入另一个字符,将它存储在另一个字符变量中,并打印出来。
下面是我的代码:
#include <stdio.h>
int main()
{
printf("Please enter a char: ");
char myChar = getchar();
printf("The char entered is: ");
putchar(myChar);
printf("n");
printf("Please enter another char: ");
char myChar2 = getchar();
printf("The char entered is: ");
putchar(myChar2);
printf("n");
return 0;
}
当我在我的终端中运行这个程序时,我看到的是以下内容,这不是我期望的行为。
cnewbie@cnewbies-MacBook-Pro c % ./a.out
Please enter a char: k
The char entered is: k
Please enter another char: The char entered is:
cnewbie@cnewbies-MacBook-Pro c %
当我运行程序时,它输出"Please enter a char: "然后等我输入一个字符。我输入k,然后回车。然后它不仅输出"进入的汽车是:"还有上面所示的其他行。
问题:为什么我的程序不等待我输入另一个字符?
我是C的初学者,我不知道为什么这是这样的行为。请帮助! !
getchar
还读取空白字符,包括由于按Enter键而放置在输入缓冲区中的新行字符'n'
。
用以下方法调用scanf
char myChar;
scanf( " %c", &myChar );
^^^^
注意格式字符串中的前导空格。它允许跳过空白字符。