[問題] 無法改變字元陣列的內容?

看板C_and_CPP作者 (花生)時間11年前 (2013/04/27 21:09), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
小弟在寫一道題目: 請以c實作函式void reverse(char* str),反轉一個以null結尾的字串 轉入的參數:str 我重新分配一個跟str同樣大小的陣列p 把str的內容從後面一個一個複製到陣列p裡面 再把陣列p的內容一個一個複製到str裡面 但是程式執行到紅色那行就會掛掉 請問是為什麼呢?@@ 我的code: ============================================================= #include <stdio.h> int main() { char* str = "abc"; printf("%s\n",str); reverse(str); printf("%s\n",str); return 0; } void reverse(char* str){ char* p = NULL; p = malloc(sizeof(char) * strlen(str) +1); if( p ==NULL) exit(1); int j=0,i=0; for(i=strlen(str)-1;i>=0;i--){ p[j] = str[i]; j++; } p[j] = NULL; for(i=0;i<strlen(str);i++){ str[i] = p[i]; } free(p); } ================================================================ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.218.117.242

04/27 21:14, , 1F
"String literals" 都是唯讀的
04/27 21:14, 1F

04/27 21:15, , 2F
改成 char str[] = "abc"
04/27 21:15, 2F
文章代碼(AID): #1HUyuKmU (C_and_CPP)