免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 3810 | 回复: 20
打印 上一主题 下一主题

[函数] 请教:用gets()函数时出错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-14 14:05 |只看该作者 |倒序浏览
下面是一个测试程序,
#include<stdio.h>
#include<string.h>

main()
{     
   
      
      char *str1,*str2;
   
      
      printf("input two string\n");
      
      gets(str1);
      gets(str2);

      puts(str1);
      puts(str2);
}

当我运行的时候,出现错误如图,为何啊?

未命名.JPG (14.09 KB, 下载次数: 22)

错误图

错误图

论坛徽章:
0
2 [报告]
发表于 2006-08-14 14:07 |只看该作者
两个指针指到了一个莫名其妙的位置,指针用前要初始化,让它指到一个可用的位置,或者让它为NULL表示该指针不可用
hoho~总算抢到了一个沙发~

论坛徽章:
0
3 [报告]
发表于 2006-08-14 14:13 |只看该作者
楼上的,这里不知道要输入多少个字符啊,怎么能指定地址呢

我试过指向空指针,但是还是出现上面的错误

论坛徽章:
0
4 [报告]
发表于 2006-08-14 14:19 |只看该作者
-_-||
用空指针当然出现错误了……
注意我说的:
或者让它为NULL表示该指针不可用

是不可用……NULL指针是不可用的意思

不知道大小就猜,猜不准再猜…………
LZ可以man malloc和man realloc……

论坛徽章:
0
5 [报告]
发表于 2006-08-14 14:21 |只看该作者
原帖由 ballfan_123 于 2006-8-14 14:13 发表
楼上的,这里不知道要输入多少个字符啊,怎么能指定地址呢

我试过指向空指针,但是还是出现上面的错误

可以粗略地使用
str1 = gets(NULL);
让gets自动分配内存。

不过gets已经不推荐使用了。它不是线程安全的。

论坛徽章:
0
6 [报告]
发表于 2006-08-14 14:28 |只看该作者
原帖由 默难 于 2006-8-14 14:19 发表
-_-||
用空指针当然出现错误了……
注意我说的:

是不可用……NULL指针是不可用的意思

不知道大小就猜,猜不准再猜…………
LZ可以man malloc和man realloc……




两个字符串是随机输入的,怎么能猜呢,有时长度为100,甚至更大,有时为1,难道就定义一个死的空间,那不是浪费吗,
用内存分配也是啊,也要指定大小吧,

论坛徽章:
0
7 [报告]
发表于 2006-08-14 14:30 |只看该作者
原帖由 assiss 于 2006-8-14 14:21 发表

可以粗略地使用
str1 = gets(NULL);
让gets自动分配内存。

不过gets已经不推荐使用了。它不是线程安全的。



不行啊,我试过的,还是会出现不允许写数据的问题。
那现在我要随机从键盘得到一字符串,用什么呢

论坛徽章:
0
8 [报告]
发表于 2006-08-14 14:34 |只看该作者
原帖由 ballfan_123 于 2006-8-14 14:30 发表



不行啊,我试过的,还是会出现不允许写数据的问题。
那现在我要随机从键盘得到一字符串,用什么呢

哦。是我记错了。

论坛徽章:
0
9 [报告]
发表于 2006-08-14 14:41 |只看该作者
BSD系统提供fgetln(3)函数,可以自动分配内存。
不知道你的系统有没有

论坛徽章:
0
10 [报告]
发表于 2006-08-15 16:40 |只看该作者
原帖由 ballfan_123 于 2006-8-14 14:05 发表
下面是一个测试程序,
#include<stdio.h>
#include<string.h>

main()
{     
   
      
      char *str1,*str2;
   
      
      printf("input two string\n");
       ...




找到解决办法了,只要加上
str1=(char *)malloc(sizeof(char));
str2=(char *)malloc(sizeof(char));

然后
gets(str1);
gets(str2);


还是多谢各位。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP