[英]Is it applicable to pass pointer to character (after assigning string to it) to method and modify this string after without using array and why not?
我想使用指向char的指针将字符串传递给ac函数并对其进行修改,这给了我分段错误。 我不知道为什么? 注意*:我知道我可以将字符串传递给字符数组来解决问题
我试图将其传递给字符数组,并传递给函数名称数组,它可以工作,但是我需要知道将指针传递给字符的问题。
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";
。
更准确地说:
char *str = "AHMEDROSHDY";
“ str”是指向字符串文字的指针。 C中的字符串文字不可修改
在C标准中:
在以下情况下,行为是不确定的:...
- 程序尝试修改字符串文字
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.