免费注册 查看新帖 |

Chinaunix

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

[C] 关于字符串反向排列问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-20 22:37 |只看该作者 |倒序浏览
我的代码如下:
#include <stdio.h>
#include <stdlib.h>
void reverse_string(char *string){
    char *s=string;
    char c;
    while(*s++!='\0');
    s-=2;
    while(string<s){
         c=*string;
    *string=*s;
    *s=c;
    ++string;
    --s;
    }
}
int main()
{
    char *s;
    gets(s);
    reverse_string(s);
    printf("%s\n",s);
    return 0;
}
但是我有一个问题就是当我输入很多字符时控制台就没有显示了,当我把char *s换成char s[100]或者更大时就能输入很多相应大小数目的字符,请问这是为什么呢???我很迷惑

论坛徽章:
0
2 [报告]
发表于 2012-12-20 23:14 |只看该作者
难道没人帮我回答吗???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
3 [报告]
发表于 2012-12-21 00:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2012-12-21 09:37 |只看该作者
gets 没有边界检查,慎用或者干脆别用。manpage都说never use gets了。

论坛徽章:
1
巨蟹座
日期:2014-03-18 23:44:30
5 [报告]
发表于 2012-12-21 11:29 |只看该作者
本帖最后由 socay2 于 2012-12-21 11:29 编辑

gets 的参数 s
没有指向任何空间,你读入的东西放哪里呢?

论坛徽章:
0
6 [报告]
发表于 2012-12-21 12:29 |只看该作者
但是我用scanf还是一样的问题啊!!!!!!!!!!!!!!!!!!!!!!!!!!!怎么解决

论坛徽章:
0
7 [报告]
发表于 2012-12-21 12:54 |只看该作者
绝大多数情况下
输入数据就一定要为数据预备存储空间
这和使用gets()还是scanf()无关

论坛徽章:
0
8 [报告]
发表于 2012-12-21 12:56 |只看该作者
回复 6# 416679828

额,这个问题是刚开始s是个野指针,你需要手动申请一块内存才能调用gets或scanf函数,比如在gets(s)这个语句之前添加一个 s=(char *)malloc(100);,具体你找些C语言方面的书看看吧。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP