gpt4 book ai didi

c - C语言中的大写

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:10 25 4
gpt4 key购买 nike

我有这个代码:

void changeToCapital(char* str)
{
int i;
for (i=0; i<strlen(str); i++)
{
str[i] =str[i] -32;
}
}

并且此方法应该获取一个 char* 变量,并将其更改为大写。出于某种原因,我收到一条错误消息,提示 EXECUTE_BAD_ACCESS

调用函数:

char* s = "itzik";
changeToCapital(s);
printf("%s\n",s);

我在这里做错了什么?

最佳答案

这很可能是因为您向它传递了一个指向不可写内存的指针,例如从字符串文字中获得的指针:

char *ptr = "Hello";
changeToCapital(ptr); // <<== ERROR !

您可以更改调用以避免错误:

char ptr[] = "Hello";
changeToCapital(ptr);

附带说明,只有当所有字母均为小写时,您对大写的更改才有效。您应该使用 toupper(ch) 函数而不是减去 32。

void changeToCapital(char* str) {
for (; *str = toupper(*str) ; str++)
;
}

关于c - C语言中的大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10689876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com