You are on page 1of 6

• 用getchar() 从键盘输入单个字符

• 用putchar() 向屏幕输出单个字符
• 使用getchar()输入字符需要注意的问题

1
字符输入函数getchar函数
命令格式:getchar( ) [例]
功能:从键盘接收一个字符。 #include <stdio.h>
说明: int main()
• 只能输入一个字符; {
• 可以将获得的字符赋给int char c;
型或char型变量。 c=getchar( );
• 特点:速度快。 printf("%c\n", c);
• 以回车符‘\n’结束字符的 return 0;
输入,输入的字符(包括回车 }
符)都放在输入缓冲区。
输入:a  输出:a
2
字符输出函数 putchar()
格式: putchar(字符变量)
功能: 在标准输出设备上,输出指定的一个字符。
例:#include <stdio.h>
int main( )
{
char c; 输出:Y
c=‘Y’;
putchar(c);
return 0;
}
3
例1: 使用getchar()输入时出现的问题
#include <stdio.h>
int main()
{
char c1, c2; 输入:a  输入:ab 
c1 = getchar();
printf("c1=%c\n", c1); 输出: 输出:
c2 = getchar(); c1=a c1=a
printf("c2=%c\n", c2); c2= c2=b
return 0;
}  输入的数据放在输入行缓冲区,直到键入回车符或文件结束符EOF 时,
才认为输入结束,getchar() 才开始从输入缓冲队列读取字符。前面函数
没读走的数据仍在缓冲队列中,将被下一个函数读取。
 一次输入,多次顺序读取。 4
使用getchar()输入时出现问题处理
#include
#include <stdio.h>
<stdio.h> 如何修改程序使其得到这样的输出结果?
int
int main()
main()
{ a
{
char c1, c2;
char ch1, ch2; c1=a
c1 = getchar();
ch1 = getchar(); b
getchar();
printf("ch1=%c\n", ch1);
printf("c1=%c\n", c1); c2=b
ch2
c2 ==getchar();
getchar();
printf("ch2=%c\n", ch2);
getchar();
printf("c2=%c\n",
return0; c2);
} return 0;
}
5
例2:用getchar()接收键盘输入的不必要的回车或空格
输入: 输入:
#include <stdio.h>
16  16 
int main()
H 
{
int a; 输出: 输出:
char b; a=16,b=‘ a=16,b=‘H’
printf("Input a,b:\n "); ‘
scanf("%d",&a);
getchar();
scanf("%c",&b);
printf("a=%d,b='%c'\n",a,b);
return 0;
}
6

You might also like