C语言输入字符和字符串

您所在的位置:网站首页 字符串怎么输入python C语言输入字符和字符串

C语言输入字符和字符串

2023-11-27 00:25| 来源: 网络整理| 查看: 265

在C语言中,有多个函数可以从键盘获得用户输入:

scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。getchar()、getche()、getch():这三个函数都用于输入单个字符。gets():获取一行数据,并作为字符串处理。 scanf()函数输入

利用格式控制符来输入字符和字符串,单个字符—%c,字符串—%s

#include int main() { char letter; char url[30]; scanf("%c", &letter); //输入单个字符 scanf("%s", url); //输入字符串,可以加&也可以不加& printf("26个英文字母的最后一个是 %c\n", letter); printf("百度的网址是 \n", url); return 0; }

运行示例:↙表示按下回车键。

z↙ http://www.baidu.com↙

输出:

26个英文字母的最后一个是 z

百度的网址是 http://www.baidu.com

需要注意的一点是,scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串,请看下面的例子:

#include int main() { char tmp[30]; scanf("%s", tmp); printf("tmp: %s\n", tmp); return 0; }

运行示例:

hello world↙

输出:

tmp: hello

输入了两个字符串,但是 scanf() 只读取了一个,就是因为这两个字符串以空格为分隔,scanf() 遇到空格就认为字符串结束了,不再继续读取了。

那么如何读取空格呢?请往下看

输入单个字符

getchar()、getche() 和 getch() 这三个专用的字符输入函数,它们具有某些 scanf() 没有的特性,是 scanf() 不能代替的。

getchar()

最容易理解的字符输入函数是 getchar(),它就是scanf("%c", c)的替代品,除了更加简洁,没有其它优势了;或者说,getchar() 就是 scanf() 的一个简化版本。

用法:

#include int main() { char c; c = getchar(); printf("c: %c\n", c); return 0; }

运行示例:

#↙

c: #

getche()

getche() 没有缓冲区,输入一个字符后会立即读取,不用等待用户按下回车键,这是它和 scanf()、getchar() 的最大区别。如下:

#include #include int main() { char c = getche(); printf("c: %c\n", c); return 0; }

运行示例:

#c: #

注意:getche() 并不是标准函数,位于 conio.h 头文件中,默认只能在 Windows 下使用,不能在 Linux 和 Mac OS 下使用。

getch()

getch() 也没有缓冲区,输入一个字符后会立即读取。getch() 的特别之处是它没有回显,看不到输入的字符。所谓回显,就是在控制台上显示出用户输入的字符;没有回显,就不会显示用户输入的字符,就好像根本没有输入一样。就像输入密码时不希望被别人偷窥可以设置没有回显。

输入字符串的 gets() 函数

用法很简单,调用这个函数即可:

#include int main() { char str1[30], str2[30]; gets(str1); printf("str1: %s\n", str1); gets(str2); printf("str2: %s\n", str2); return 0; }

运行示例:

abcd↙

str1: abcd

hello C language!↙

str2: hello C language!

gets() 是有缓冲区的,每次按下回车键,就代表当前输入结束了,gets() 开始从缓冲区中读取内容,这一点和 scanf() 是一样的。gets() 和 scanf() 的主要区别是:

scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。 总结

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() 每次只能读取一份特定类型的数据,不能一次性读取多份数据。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3