关于将一个字符串中的小写字母改为大写字母

nixindong1984 2012-09-11 08:53:39
源码:

#include <stdio.h>

void big_lower(char *ops);

int main(void)
{
char *src = "abcdefghIJKlmnopq";
big_lower(src);
puts(src);

return 0;
}

void big_lower(char *ops)
{
while(*ops)
{
if (*ops >= 'a' && *ops <= 'z')
{
*ops -= 32;
}
ops++;
}
}


错误地方:
*ops -= 32;

我觉得由小写字母改为大写字母,只要将其ASCII码减小32即可,为什么有以下这种错误:
把一个字符串中的字母由小写变为大写.exe 中的 0x00a0148a 处有未经处理的异常: 0xC0000005: 写入位置 0x00a0573c 时发生访问冲突(*ops -= 32;)
...全文
173 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
nixindong1984 2012-09-11
  • 打赏
  • 举报
回复
谢谢,确实是这样。
nice_cxf 2012-09-11
  • 打赏
  • 举报
回复
char *src = "abcdefghIJKlmnopq";是常量指针,里面的数据不能修改
char src[] = "abcdefghIJKlmnopq";应该就可以了

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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