C语言输入字符和字符串
原创
©著作权归作者所有:来自51CTO博客作者CurryCoder的原创作品,请联系作者获取转载授权,否则将追究法律责任
1.C语言中输入字符和字符串
- C语言有多个函数可以从键盘获得用户输入,它们分别是:
- scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。
- getchar()、getche()、getch():这三个函数都用于输入单个字符。
- gets():获取一行数据,并作为字符串处理。
2.输入单个字符
- 输入单个字符当然可以使用scanf()这个通用的输入函数,对应的格式控制符为%c,。本节重点讲解的是getchar()、getche()和getch()这三个专用的字符输入函数,它们具有某些scanf()没有的特性,是scanf()不能代替的。
2.1 getchar()
2.2 getche()
2.3 getch()
2.4 三个函数的总结
3.输入字符串
- 输入字符串当然可以使用scanf()这个通用的输入函数,对应的格式控制符为%s;本节重点讲解的是gets()这个专用的字符串输入函数,它拥有一个scanf()不具备的特性。gets()的使用也很简单,请看下面的代码:
#include "stdio.h"
#include "stdlib.h"
#include "conio.h" // getche()需要包含的头文件
int main(){
// gets()
char author[30], lang[30], url[30];
gets(author);
printf("author: %s\n", author);
gets(lang);
printf("lang: %s\n", lang);
gets(url);
printf("url: %s\n", url);
return 0;
}
-
gets()是有缓冲区的,每次按下回车键,就代表当前输入结束了,gets()开始从缓冲区中读取内容,这一点和scanf() 是一样的。gets() 和scanf()的主要区别是:gets()能读取含有空格的字符串,而scanf()不能
- scanf()读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。
- gets()认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets()来说就是一个完整的字符串。
4.总结
- C语言中常用的从控制台读取数据的函数有五个,它们分别是scanf()、getchar()、getche()、getch()和gets()。其中scanf()、getchar()、gets()是标准函数,适用于所有平台;getche()和getch()不是标准函数,只能用于Windows。
- scanf()是通用的输入函数,它可以读取多种类型的数据;getchar()、getche()和 getch()是专用的字符输入函数,它们在缓冲区和回显方面与 scanf()有着不同的特性,是scanf()不能替代的;
- gets()是专用的字符串输入函数,与scanf()相比,gets()的主要优势是可以读取含有空格的字符串;
- scanf()可以一次性读取多份类型相同或者不同的数据,getchar()、getche()、getch()和gets()每次只能读取一份特定类型的数据,不能一次性读取多份数据。