黑马程序员技术交流社区

标题: 如何获取一段字符串,gets()方法运行期间警告 [打印本页]

作者: meegor    时间: 2014-3-8 16:34
标题: 如何获取一段字符串,gets()方法运行期间警告
本帖最后由 meegor 于 2014-3-9 17:29 编辑

C语言中的字符串是用字符数组表示的,使用gets()函数也需要提供一个字符数组作为形参。
使用scanf() 不能接收空格,于是选择了gets()函数。
但是在Xcode中使用 gets()函数,程序运行时会输出警告,说gets()不安全
  1. warning: this program uses gets(), which is unsafe.
复制代码

虽然不影响使用,但是给人不爽的感觉,
程序代码:
  1. #import "stdio.h"
  2. int main()
  3. {
  4.     char str[100];
  5.     printf("请输入一段字符:");
  6.     gets(str);
  7.     printf("你输入的字符串为:%s\n", str);
  8.     return 0;
  9. }
复制代码



运行截图:


不知道有啥好的获取字符串的方法




作者: Monkey·D·Chas    时间: 2014-3-8 22:06
for循环 输入    只要你不怕麻烦!
作者: 脸皮猴    时间: 2014-3-8 22:55
- -话说··我直接用的gets()。。。。。忽略警告了。。。。
作者: apple_victor    时间: 2014-3-9 06:27
获取输入的字符中函数有scanf(), gets(),getchar()函数;
但是gets函数有一定的缺陷性:
1.没有检查边界,有人可以利用gets()不检查边界,用输入进行攻击,所以不安全;
2.使用gets()函数容易内存溢出,即:输入的字符串大于数组的容量时字符串就溢出了;
3.gets()函数接收的输入字符大小不受限制;
所以,使用这个函数时,应注意以上关键点。
-
getchar()函数只接受单个字符,输入数字也按字符处理,输入多于一个字符时,只接受第一个字符。


作者: 氯化钾    时间: 2014-3-12 22:24
收进来的字符串判断下? 也够郁闷的了 确实不安全 但是注意点不就好了吗 C指针也不百分百安全~但是大家也都认可了吗 你说是吗?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2