帮忙看看这个指针是什么错误

geddy 2009-11-16 02:54:20
程序如下,执行时出core,是什么原因,谢谢!
void trans2lower(const char *pSrc, char* pDest)
{
char ch;
if( !pSrc || !pDest )
return;
while( (ch = *pSrc++) != 0 )
{
if( (unsigned char)ch >= 0x80 )
{
*pDest++ = ch;
*pDest++ = *pSrc++;
}
else
*pDest++ = tolower(ch);
}
*pDest = 0;
}
...全文
122 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kacasy 2009-11-16
  • 打赏
  • 举报
回复
pSrc="A",'A'小于128,pSrc应该不会自增两次,4楼指教。
newhying 2009-11-16
  • 打赏
  • 举报
回复
看上去没发现代码错误,
试了一下也没错,不知道楼主的具体错误是什么。
t1397018 2009-11-16
  • 打赏
  • 举报
回复
搂住贴全部代码吧
geddy 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 amossavez 的回复:]
楼主你转化之后的字符串你保存到哪去了?
[/Quote]
pDest中啊
amossavez 2009-11-16
  • 打赏
  • 举报
回复
楼主你转化之后的字符串你保存到哪去了?
geddy 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 liangyonglou 的回复:]
void trans2lower(const char *pSrc, char* pDest) 中完全可以用实参的空间的,把你调用前的也发上来,大家看看,4楼的说法有可能!
[/Quote]

什么样的调用有问题,什么样的调用没问题呢?
liangyonglou 2009-11-16
  • 打赏
  • 举报
回复
void trans2lower(const char *pSrc, char* pDest) 中完全可以用实参的空间的,把你调用前的也发上来,大家看看,4楼的说法有可能!
selooloo 2009-11-16
  • 打赏
  • 举报
回复
while( (ch = *pSrc++) != 0 )
{
if( (unsigned char)ch >= 0x80 )
{
*pDest++ = ch;
*pDest++ = *pSrc++; //执行了两次pSrc++操作
}
else
*pDest++ = tolower(ch);
}

t1397018 2009-11-16
  • 打赏
  • 举报
回复
4楼的情况有可能
t1397018 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 geddy 的回复:]
hi,t1397018,能否详细点,对指针操作不是很明白,谢谢
[/Quote]
void trans2lower(const char *pSrc, char* pDest)
估计就没有,这段代码看不出你的错误在哪,但是可以确定是
你有没有分配足够的地址给pSrc pDest
berryluo 2009-11-16
  • 打赏
  • 举报
回复
while( (ch = *pSrc++) != 0 ) 和 *pSrc++; 这两个自增,可能把字符串的结尾跳过了,导致pSrc指向了未知的区域,比如如果
*pSrc = "A";while循环就不知道什么时候会结束了
冻结 2009-11-16
  • 打赏
  • 举报
回复
*pDest++ = ch;
//*pDest++ = *pSrc++;
这两句的问题吧。
geddy 2009-11-16
  • 打赏
  • 举报
回复
hi,t1397018,能否详细点,对指针操作不是很明白,谢谢
t1397018 2009-11-16
  • 打赏
  • 举报
回复
野指针,检查pDest pSrc会不会越界

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧