c++字符串合并_C语⾔输⼊字符和字符串(所有函数⼤汇总)
C语⾔输⼊字符和字符串(所有函数⼤汇总)
C语⾔有多个函数可以从键盘获得⽤户输⼊,它们分别是:
scanf():和printf()类似,scanf()可以输⼊多种类型的数据。
getchar()、getche()、getch():这三个函数都⽤于输⼊单个字符。
gets():获取⼀⾏数据,并作为字符串处理。
scanf()是最灵活、最复杂、最常⽤的输⼊函数,上节我们已经进⾏了讲解,本节接着讲解剩下的函数,也就是字符输⼊函数和字符串输⼊
函数。
输⼊单个字符
输⼊单个字符当然可以使⽤scanf()这个通⽤的输⼊函数,对应的格式控制符为%c,上节已经讲到了。本节我们重点讲解的是
getchar()、getche()和getch()这三个专⽤的字符输⼊函数,它们具有某些scanf()没有的特性,是scanf()不能代替的。
1)getchar()
最容易理解的字符输⼊函数是getchar(),它就是scanf("%c",c)的替代品,除了更加简洁,没有其它优势了;或者说,getchar()就是
scanf()的⼀个简化版本。
下⾯的代码演⽰了getchar()的⽤法:
#includeintmain(){charc;c=getchar();printf("c:%c",c);return0;}
输⼊⽰例:
@↙c:@
你也可以将第4、5⾏的语句合并为⼀个,从⽽写作:
charc=getchar();
2)getche()
getche()就⽐较有意思了,它没有缓冲区,输⼊⼀个字符后会⽴即读取,不⽤等待⽤户按下回车键,这是它和scanf()、getchar()的最⼤
区别。请看下⾯的代码:
#include#includeintmain(){charc=getche();printf("c:%c",c);return0;}
输⼊⽰例:
@c:@
输⼊@后,getche()⽴即读取完毕,接着继续执⾏printf()将字符输出,所以没有按下回车键程序就运⾏结束了。
注意,getche()位于conio.h头⽂件中,⽽这个头⽂件是Windows特有的,Linux和MacOS下没有包含该头⽂件。换句话
说,getche()并不是标准函数,默认只能在Windows下使⽤,不能在Linux和MacOS下使⽤。
3)getch()
getch()也没有缓冲区,输⼊⼀个字符后会⽴即读取,不⽤按下回车键,这⼀点和getche()相同。getch()的特别之处是它没有回显,看
不到输⼊的字符。所谓回显,就是在控制台上显⽰出⽤户输⼊的字符;没有回显,就不会显⽰⽤户输⼊的字符,就好像根本没有输⼊⼀样。
回显在⼤部分情况下是有必要的,它能够与⽤户及时交互,让⽤户清楚地看到⾃⼰输⼊的内容。但在某些特殊情况下,我们却不希望有回
显,例如输⼊密码,有回显是⾮常危险的,容易被偷窥。
getch()使⽤举例:
#include#includeintmain(){charc=getch();printf("c:%c",c);return0;}
输⼊@后,getch()会⽴即读取完毕,接着继续执⾏printf()将字符输出。但是由于getch()没有回显,看不到输⼊的@字符,所以控制台
上最终显⽰的内容为c:@。
注意,和getche()⼀样,getch()也位于conio.h头⽂件中,也不是标准函数,默认只能在Windows下使⽤,不能在Linux和MacOS
下使⽤。
对三个函数的总结
函数缓冲区头⽂件回显适⽤平台getchar()有stdio.h有Windows、Linux、MacOS等所有平台getche()⽆conio.h有Windowsgetch()⽆
conio.h⽆Windows
输⼊字符串
输⼊字符串当然可以使⽤scanf()这个通⽤的输⼊函数,对应的格式控制符为%s,上节已经讲到了;本节我们重点讲解的是gets()这个专
⽤的字符串输⼊函数,它拥有⼀个scanf()不具备的特性。
gets()的使⽤也很简单,请看下⾯的代码:
#includeintmain(){charauthor[30],lang[30],url[30];gets(author);printf("author:%s",author);gets(lang);printf("lang:%s",lang);gets(url);
运⾏结果:
gets()是有缓冲区的,每次按下回车键,就代表当前输⼊结束了,gets()开始从缓冲区中读取内容,这⼀点和scanf()是⼀样的。gets()
和scanf()的主要区别是:
scanf()读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以⽆法读取含有空格的字符串。
gets()认为空格也是字符串的⼀部分,只有遇到回车键时才认为字符串输⼊结束,所以,不管输⼊了多少个空格,只要不按下回车键,
对gets()来说就是⼀个完整的字符串。
也就是说,gets()能读取含有空格的字符串,⽽scanf()不能。
总结
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()每次只能读取⼀份特定类型的数据,不
能⼀次性读取多份数据。
本文发布于:2023-03-07 06:24:09,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1678141450128592.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:getche.doc
本文 PDF 下载地址:getche.pdf
留言与评论(共有 0 条评论) |