gpt4 book ai didi

c - 在不使用数组的情况下将指向字符的指针(在为其分配字符串之后)传递给方法并修改此字符串是否适用,为什么不呢?

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

我想使用指向 char 的指针将字符串传递给 c 函数并修改它,但它给了我段错误。我不知道为什么?注意*:我知道我可以将字符串传递给字符数组来解决问题

我试图将它传递给字符数组并将数组名称传递给函数并且它有效,但我需要知道将指针传递给字符的问题是什么。

void convertToLowerCase(char* str){

int i=0;
while(str[i] != '\0')
{
if(str[i]>='A'&& str[i]<='Z'){
str[i]+=32;
}
i++;
}
}

int main(void){

char *str = "AHMEDROSHDY";
convertToLowerCase(str);
}

我希望输出 str 是“ahmedroshdy”,但实际输出段错误

最佳答案

这(你有 char str* 这是一个语法错误,已修复):

char *str = "AHMEDROSHDY";

是一个指向字符串文字的指针,因此不能修改,因为它存储在只读内存中。

你在这里修改str[i]+=32;,这是不允许的。

按照@xing 的建议,改用数组,即 char str[] = "AHMEDROSHDY";

关于c - 在不使用数组的情况下将指向字符的指针(在为其分配字符串之后)传递给方法并修改此字符串是否适用,为什么不呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56099612/

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