[問題] 字串反轉問題

看板C_and_CPP作者 (小李)時間6年前 (2017/10/29 20:46), 編輯推噓6(606)
留言12則, 7人參與, 6年前最新討論串1/1
void reverse(char[]); int main() { char *str="12345"; reverse(str); puts(str); free(str); system("pause"); return 0; } void reverse(char str[]) { unsigned int i,j=strlen(str)-1; for(i=0;i<j;++i,--j) { char temp=str[i]; str[i]=str[j]; str[j]=temp; } } 執行後發生錯誤 爬文後有人說char *str="12345"; 只能讀 不能改 不太明白..會什麼指到的值不能改?! 這個宣告 也是分配一塊記憶體存"12345\0"不是嗎?! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.164.58.27 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1509281194.A.C04.html

10/29 20:58, 6年前 , 1F
應該是因爲你丟給str的是ㄧ個字面常數,所以不能改裡面的值
10/29 20:58, 1F

10/29 20:59, 6年前 , 2F
用malloc吧,再strcpy
10/29 20:59, 2F

10/29 21:00, 6年前 , 3F
要強硬改的話要修改分頁檔屬性,很麻煩呢
10/29 21:00, 3F

10/29 21:14, 6年前 , 4F
你改成char str[] = "12345";就可以了
10/29 21:14, 4F

10/29 22:04, 6年前 , 5F
置底十三誡之第四誡
10/29 22:04, 5F

10/30 01:15, 6年前 , 6F
他是constant 當然不能改
10/30 01:15, 6F

10/30 01:40, 6年前 , 7F
當然也不是完全改不了,知道些原理比較好
10/30 01:40, 7F

10/30 01:41, 6年前 , 8F
char*字串放哪,char[]放哪,什麼的弄清楚就會了
10/30 01:41, 8F

10/30 10:34, 6年前 , 9F
有時侯,指標就只是指標而已,不要有過多的期望~~ 指過
10/30 10:34, 9F

10/30 10:34, 6年前 , 10F
去而已
10/30 10:34, 10F

10/30 11:14, 6年前 , 11F
只能用strcpy swap
10/30 11:14, 11F

10/30 11:16, 6年前 , 12F
如果用Char *str
10/30 11:16, 12F
文章代碼(AID): #1PzSsgm4 (C_and_CPP)