【发布时间】:2020-04-27 20:03:52
【问题描述】:
我一直在尝试操作字符串“Hello World!”的元素。在主函数中找到。我的目标是将“Hello World!”的小写字母大写。在“大写”函数内部,但它不允许我。我尝试在不操作任何元素的情况下返回字符串,它工作正常,但是一旦我包含将小写字符转换为大写字符的代码部分,就会出现运行时错误,提示“线程 1:EXC_BAD_ACCESS (code=2, address=0x100000fa9). 什么不允许我操作字符数组,我应该怎么做才能解决它?
char *capitalize(char *str)
{
int i;
for(i = 0; i < 4; i++)
if(str[i] >= 'a' && str[i] <= 'z')
str[i] -= 32; //I receive an error hear saying
//Thread 1: EXC_BAD_ACCESS (code=2, address=0x100000fa9)
return str;
}
int main()
{
char string[40];
printf("\n%s\n", strcpy(string, capitalize("abcd")));
return 0;
}
作为参考,我在教科书中包含了具体问题:
问题 3.4。实现 char *Capitalize(char *str);它将大写字符串中的所有小写字母。这些函数将指针返回到修改后的字符串的第一个字节。例如,函数调用 strcpy(string, Capitalize("Hello World!"));将复制“HELLO WORLD!”作为变量字符串的值。
【问题讨论】:
-
字符串
abcd分配在内存的只读部分。你不能修改它们
标签: c arrays pointers char c-strings