gpt4 book ai didi

c - C 中 toUpper() 实现的段错误

转载 作者:行者123 更新时间:2023-11-30 18:38:48 25 4
gpt4 key购买 nike

我正在尝试自己实现 toupper() C 中的函数;我的函数应该适用于任何长度的字符串。我不确定为什么当我尝试更改字符串的内容时,编译器会抛出段错误,如下所示。有什么办法可以解决这个错误吗? (我尝试使用数组而不是指针,但没有成功。) 注意:isLetter()是我写的一个函数,用于判断一个字符是否是字母字符。

void toUpper(char *s){
while(*s != '\0'){
if(isLetter(*s)&&(*s> 90)){
*s += ('a' - 'A');
}
s++;
}

我这样调用该函数:

char *s = "Hello";
toUpper(s);

最佳答案

char *s = "Hello";

字符串文字是不可修改的。由于历史的偶然,它们与 char* 兼容。因此,您遇到了运行时错误。如果您启用警告,您的编译器会告诉您在这里犯了一个错误。

更多信息请点击:Are string literals const?

传递一个可修改的字符串:

char s[] = "Hello";
toUpper(s);

然后您需要修复函数中的错误。循环体应为:

if (*s >= 'a' && *s <= 'z')
*s -= ('a' - 'A');

关于c - C 中 toUpper() 实现的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32345053/

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