A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

meegor

中级黑马

  • 黑马币:0

  • 帖子:29

  • 精华:0

本帖最后由 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. }
复制代码



运行截图:


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



评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

4 个回复

正序浏览
收进来的字符串判断下? 也够郁闷的了 确实不安全 但是注意点不就好了吗 C指针也不百分百安全~但是大家也都认可了吗 你说是吗?
回复 使用道具 举报
获取输入的字符中函数有scanf(), gets(),getchar()函数;
但是gets函数有一定的缺陷性:
1.没有检查边界,有人可以利用gets()不检查边界,用输入进行攻击,所以不安全;
2.使用gets()函数容易内存溢出,即:输入的字符串大于数组的容量时字符串就溢出了;
3.gets()函数接收的输入字符大小不受限制;
所以,使用这个函数时,应注意以上关键点。
-
getchar()函数只接受单个字符,输入数字也按字符处理,输入多于一个字符时,只接受第一个字符。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报 1 0
- -话说··我直接用的gets()。。。。。忽略警告了。。。。
回复 使用道具 举报
for循环 输入    只要你不怕麻烦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马