关于将一个字符串中的小写字母改为大写字母
源码:
- C/C++ code
#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;)
[解决办法]
char *src = "abcdefghIJKlmnopq";是常量指针,里面的数据不能修改
char src[] = "abcdefghIJKlmnopq";应该就可以了