C语言中有多个函数可以丛键盘获得用户输入,常见的输入函数有:
- scanf() 可输入多种类型的数据
- getchar() 输入单个字符
- getche() 输入单个字符
- getch() 输入单个字符
- gets() 获取一行数据,并作为字符串处理
1.scanf()
scanf()是最灵活,最复杂,最常用的输入函数,scanf的功能用一句话概括就是“通过键盘给程序中的变量赋值”。具体用法为 scanf("输入控制符",输入参数);
下面给大家举个例子:
#include<stdio.h> int main() { int a; scanf("%d", &a); //&a表示变量 a 的地址,&是取地址运算符 printf("%d", a); return 0; }
当然,如果要一次给多个变量赋值:
#include<stdio.h> int main() { int a, b; scanf("%d %d", &a,&b); printf("%d %d", a, b); return 0; }
注意:在scanf的“输入参数”中,变量前面的取地址符&不要忘记。
2.getchar()
getchar()可以用来输入单个字符,它就是scanf("%c",&a)的代替品,除了更简洁,没有更多优势了;也可以说getchar()是scanf()的一个简化版本。
下面给大家举个getchar()的使用例子:
#include<stdio.h> int main() { char c; c = getchar(); printf("%c", c); return 0; }
3.getche()
getche()是一个比叫有意思的 输入函数,他没有缓冲区,输入一个字符后会立即读取,不用等待用户按下回车键,这是它和scanf(),getchar()的最大区别。
请看下面关于getche()使用的代码:
#include<stdio.h> #include<conio.h> int main() { char c; c = getche(); printf("\n%c", c); return 0; }
输入实例:
当我们从键盘输入一个字符‘w’,getche()立即读取完毕,接着执行printf()将字符输出,所以没有按回车就执行结束了。
2.getch
getch()也没有缓冲区,输入一个字符会立即读取,不用按下回车键,这一点和getche()相同。但getch()的特别之处是getch()没有回显,看不到输入的字符。(回显就是在控制台显示用户输入的字符;没有回显,就不会显示用户输入的字符)
getch()使用举例:
#include<stdio.h> #include<conio.h> int main() { char c; c = getch(); printf("\n%c", c); return 0; }
输入输出示例:
当我们从键盘输入一个字符‘w’,getch()立即读取完毕,接着执行printf()将字符输出,但由于getch()没有回显,看不到输入的字符 'w' 。
5.gets()
gets()可以用来输入字符串,当然前面所讲到的scanf()也可以用来输入字符串对应的格式控制符为%s,但使用scanf()输入的字符串中不能含有空格,遇到空格就认为当前字符串结束了,所以无法读取有空格的字符串。
gets()认为空格也是字符串的一部分,只有遇到回车键时才会认为字符串输入结束,所以不管有多少个空格,只要不按下回车键,对gets()来说都是一个完整的字符串。
下面是gets()的使用方法:
#include<stdio.h> int main() { char c[10]; char d[10]; gets(c); gets(d); printf("%s\n", c); printf("%s\n", d); return 0; }
输入输出示例