[問題] 大家好 關於字串反轉

看板C_and_CPP作者時間11年前 (2013/02/18 20:35), 編輯推噓5(508)
留言13則, 7人參與, 最新討論串1/4 (看更多)
大家好 今天我想用函數來做字串反轉 #include <stdio.h> #include <string.h> void reverse(char* str) { int i, j; char temp; for(i=0, j = strlen(str)-1; i<j; ++i, --j) temp = str[i], str[i]=str[j], str[j]=temp; } int main() { char * str=(char *)malloc(5*sizeof(char)); *str="12345"; reverse(str); puts(str); return 0; } 每次輸出都是錯誤 想請問問題是出在哪呢 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.217.113 ※ 編輯: tobashi 來自: 114.36.217.113 (02/18 20:37)

02/18 20:40, , 1F
你malloc後str的內容就變垃圾資料了(未初始化)
02/18 20:40, 1F

02/18 20:40, , 2F
應該先malloc在用strcpy把12345存進去
02/18 20:40, 2F

02/18 20:41, , 3F
整篇都是問題
02/18 20:41, 3F

02/18 20:47, , 4F
抱歉 一時沒看懂你的reverse 一樓是對的
02/18 20:47, 4F

02/18 20:47, , 5F
你的12345不見了
02/18 20:47, 5F
※ 編輯: tobashi 來自: 114.36.217.113 (02/18 20:48)

02/18 20:49, , 6F
改成這樣之後輸出還是空白的 真的感謝大家
02/18 20:49, 6F

02/18 20:56, , 7F
你的字串認知有誤. 簡單點就 char str[] = "12345";
02/18 20:56, 7F

02/18 20:58, , 8F
是阿 不過我想知道指標的方法 謝謝
02/18 20:58, 8F

02/18 21:07, , 9F
指標你要自己塞,然後最後要記得加null
02/18 21:07, 9F

02/18 21:08, , 10F
不過看你的程式,我想你觀念問題還不小,先試著自己檢查
02/18 21:08, 10F

02/18 21:08, , 11F
程式有哪些錯誤吧
02/18 21:08, 11F

02/18 21:14, , 12F
先講最明顯的,原po你確定你的字串大小只有5而已嗎XD
02/18 21:14, 12F

02/18 21:21, , 13F
要用動態配置的話就是一樓的作法 (句點) *str="12345"; 改掉
02/18 21:21, 13F
文章代碼(AID): #1H8Y0Xup (C_and_CPP)
文章代碼(AID): #1H8Y0Xup (C_and_CPP)