[英]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.