回 帖 发 新 帖 刷新版面

主题:字符串反转,有时内存访问冲突

字符串反转函数
void reverse_string( char *string )
{
    char ch;
    char *p, *q;
    if (string == NULL)
        return;
    
    for (p = string; *p != '\0'; p++) 
        ;
    q = --p;
    
    for ( p = string; p != q; p++, q-- ) {
        ch = *p;
        *p = *q;// 执行到这里程序出错,提示内存访问冲突
        *q = ch;
    }

}
刚发了个帖子也是内存访问冲突,实在不明白为什么不能这样操作字符串,求高手写一个字符串反转函数。。。

回复列表 (共6个回复)

沙发


[url]http://bbs.pfan.cn/post-362739.html[/url]
还是lz问的那个问题,还有,*q最好得初始化啊!

板凳

for ( p = string; p != q; p++, q-- )
如果字符串的长度是偶数,则p != q这个条件可能永远成立。建议修改为p < q。

3 楼

[quote]for ( p = string; p != q; p++, q-- )
如果字符串的长度是偶数,则p != q这个条件可能永远成立。建议修改为p < q。[/quote]


这个问题隐藏的好深啊,不仔细很难看出来.

4 楼

[quote]for ( p = string; p != q; p++, q-- )
如果字符串的长度是偶数,则p != q这个条件可能永远成立。建议修改为p < q。[/quote]
[em14][em14][em14]哈哈!

5 楼

有没有人能回答我的问题?具体把 p!=q 改成 p<q 我也知道,麻烦回答一下问题的本质。。。。

6 楼

呃。。。抱歉,主题写错了,不是有时内存访问冲突,是一直内存访问冲突

我来回复

您尚未登录,请登录后再回复。点此登录或注册