免费注册 查看新帖 |

Chinaunix

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

[C] 《C和指针》第六章习题答案中的一个BUG? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-05 22:13 |只看该作者 |倒序浏览
本帖最后由 Gegung 于 2014-10-05 22:16 编辑

/*
函数把参数字符串的字符反向排列。 使用指针而不是数组下标,
不要使用任何C函数库中用于操纵字符串的函数。
提示:
不需要声明一个局部数组来临时存储参数字符串
*/

void reverse_string(char* str)
{
        char* last_char;
        for(last_char=str;*last_char!='\0';last_char++)
                ;
        last_char--;

        while(str<last_char)
        {
            char temp;
            temp = *str;
            *str++ =*last_char;//Segmentation fault ?
            *last_char-- = temp;        
         }
}

论坛徽章:
1
处女座
日期:2014-09-18 16:18:00
2 [报告]
发表于 2014-10-05 23:49 |只看该作者
回复 1# Gegung
传入的字符串声明时是怎么样的
是char *str;
还是 char str[];
如果是前者就会段错误,常量字符串是不允许修改的
   

论坛徽章:
0
3 [报告]
发表于 2014-10-06 18:27 |只看该作者
恩 谢谢 按照你那样做 问题解决了回复 2# Kasiotao


   

论坛徽章:
0
4 [报告]
发表于 2014-10-06 18:34 |只看该作者
你好 你能讲一下 为什么 不行么回复 2# Kasiotao


   

论坛徽章:
0
5 [报告]
发表于 2014-10-07 18:03 |只看该作者
第一种字符串存放在常量区,试图通过指针对修改常量区当然会报错;而第二种是存放在栈内 回复 4# Gegung


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP