下面我们从字符。字符串的输入讲起,为大家理清楚gets函数scanf函数即getchar函数的区别等
单个字符的输入
1)getchar
头文件 | #include<stdio.h> |
函数原型 | int getchar ( void ); |
返回值 | 以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。 |
作用 | 读取一个任意的字符 从缓冲区读走一个字符,相当于清除缓冲区 |
基本用法:
1,读取一个字符
2,用于清空缓冲区
下面解释什么是清空缓冲区:如下:
#include<stdio.h>
int main()
{
//我们输入一个数和一个字符
int height;
char id;
scanf("%d", &height);
scanf("%c", &id);
printf("%d %c", height, id);
return 0;
}
上述代码的输出为:
当我们输入数字1111并按下回车之后,系统会自动的吧我们所按的回车当作字符存在id中,导致了运行错误!!(这是最简单的理解吧)
改进为:
#include<stdio.h>
int main()
{
//我们输入一个数和一个字符
int height;
char id;
scanf("%d", &height);
getchar();//读入回车,清空缓冲区
scanf("%c", &id);
printf("%d %c", height, id);
return 0;
}
正确的运行结果为:
2)scanf函数
scanf函数大家应该很熟悉了
scanf函数输入字符即scanf("%c"&zifu);
scanf函数处理单个字符时与getcahr函数相同
字符串的输入
1)gets函数
#include<stdio.h>
int main()
{
char arr[100] = { 0 };
gets(arr);
printf("%s", arr);
return 0;
}
看样例:
这里它读入了空格并且打印
总结:
从标准输入设备(如键盘)读取字符到s所指向的数组中,直到读到文件末尾或者换行符‘\n’。换行符被丢弃,最后一个字符读入后写入一个 ‘\0’。若成功则返回s,若无字符读入数组或者读取失败返回空指针NULL。
2)scanf函数
#include<stdio.h>
int main()
{
char arr[100] = { 0 };
scanf("%s", arr);
//注意字符数组的数组名即地址,不用取址符&
printf("%s", arr);
return 0;
}
看输出样例:
这里我输入了:i love you 但是它只打印了 i
我输入了: hello(前面有三个空格)但是空格也没有打印
总结: scanf函数读取用户键入的字符到字符数组,直到遇到空格,回车,或者文件结束符(EOF)为止,空格,回车,或者文件结束符被丢弃,最后一个字符读入后往字符数组中写入结束符'\0'。