【Linux C】scanf和Linux C中的gets函数警告
来源:互联网 发布:pr mac中文版免费下载 编辑:程序博客网 时间:2024/04/29 22:48
在C语言中,字符数组的输入有两种方法:
①逐个字符输入
②一次性输入整个字符串
1.逐个字符输入
使用“%c”,例如:
2.一次性输入整个字符串
使用“%s”,例如:
需要注意的是,在这里定义的str数组的长度为10,则输入的字符串的长度应小于定义的长度10.若输入hello,则系统自动在输入的hello后面加一个’\0’结束符。
若利用一个scanf输入多个字符串,则要用空格分隔输入的字符串。例如:
由于定义的字符数组长度比输入的字符串的长度要长,所以数组中未被赋值的元素的值会被自动置’\0’。利用空格分隔输入的字符串,运行之后结果如下:
但若将程序改为如下图所示:
此时运行结果如下:
在这里,空格被认为是字符串之间的分隔符,所以只有空格前的Hello被送入str,导致输出的结果不是我们想要的结果。
若要得到我们想要的结果,可以用gets函数,用于输入字符串。
如下图代码:
运行结果如下:
此时便得到了想要的结果。然而同时在编译过后出现了一个警告,即“warning:the ‘gets’ function is dangerous and should not be used.”
原因是在程序中使用了gets函数,而Linux下的gcc编译器不支持这个函数。可以使用fgets函数替代gets函数解决这个问题。
另外,如果代码如下:
则此时输出结果如下:
即当程序运行并且输入时,当输入了num1,便隔过ch,直接输入num2。因为ch是字符型变量,当输入了num1后再回车,ch便被认为输入了’\n’,所以出现了上述情况。解决办法是在输入ch之前加一个getchar函数,如图:
此时结果为下图,便是我们想要的结果了。
- 【Linux C】scanf和Linux C中的gets函数警告
- 【Linux C】scanf和Linux C中的gets函数警告
- 【Linux C】scanf和Linux C中的gets函数警告
- 【Linux C】scanf和Linux C中的gets函数警告
- 【Linux C】scanf和Linux C中的gets函数警告
- scanf和Linux C中的gets函数警告
- Linux C 字符串输入函数 gets()、fgets()、scanf() 详解
- linux c 语言gets函数出现的警告问题
- linux下C语言编译报错gets函数警告
- C语言gets()和scanf()函数
- c 中的scanf, gets,fgets
- c语言scanf()函数和gets()函数的区别
- C语言 gets()和scanf()函数的区别
- C语言 gets()和scanf()函数的区别
- C语言-- gets()和scanf()函数的区别
- C语言 gets()和scanf()函数的区别
- C语言 gets()和scanf()函数的区别
- C语言 gets()和scanf()函数的区别
- R语言读取Excel文件
- 黑马程序员_一个小程序的发现-关于#define与C的内存
- java基础---->Java的格式化输出
- 【从零开始学习Oracle数据库】(2)函数
- Verilog 中 wire 和 reg 数据类型区别
- 【Linux C】scanf和Linux C中的gets函数警告
- Maven+Spring+Spring MVC+MyBatis+MySQL整合SSM框架
- 【从零开始学习Oracle数据库】(3)函数与子查询和连接查询
- Conda python2 与 python3 共存及切换,以及包管理
- 【从零开始学习Oracle数据库】(4)创建表与增删改和数据库事务
- java高级---->Java动态代理的原理
- 【从零开始学习Oracle数据库】(5)约束视图与索引
- java基础---->Base64算法的使用
- Linux下的段错误分析