作者uni1021 (小李)
看板C_and_CPP
標題[問題] 字串反轉問題
時間Sun Oct 29 20:46:32 2017
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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1509281194.A.C04.html
1F:推 xie29: 應該是因爲你丟給str的是ㄧ個字面常數,所以不能改裡面的值 10/29 20:58
2F:→ stupid0319: 用malloc吧,再strcpy 10/29 20:59
3F:→ stupid0319: 要強硬改的話要修改分頁檔屬性,很麻煩呢 10/29 21:00
4F:推 suwako: 你改成char str[] = "12345";就可以了 10/29 21:14
5F:→ caras: 置底十三誡之第四誡 10/29 22:04
6F:推 steve1012: 他是constant 當然不能改 10/30 01:15
7F:→ stupid0319: 當然也不是完全改不了,知道些原理比較好 10/30 01:40
8F:→ stupid0319: char*字串放哪,char[]放哪,什麼的弄清楚就會了 10/30 01:41
9F:推 peterwu4: 有時侯,指標就只是指標而已,不要有過多的期望~~ 指過 10/30 10:34
10F:→ peterwu4: 去而已 10/30 10:34
11F:推 sss81521: 只能用strcpy swap 10/30 11:14
12F:推 sss81521: 如果用Char *str 10/30 11:16