[問題] 無法改變字元陣列的內容?
小弟在寫一道題目:
請以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
04/27 21:14, 1F
→
04/27 21:15, , 2F
04/27 21:15, 2F