看板 C_and_CPP 關於我們 聯絡資訊
大家好 今天我想用函數來做字串反轉 #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)
azureblaze:你malloc後str的內容就變垃圾資料了(未初始化) 02/18 20:40
azureblaze:應該先malloc在用strcpy把12345存進去 02/18 20:40
coolcomm:整篇都是問題 02/18 20:41
coolcomm:抱歉 一時沒看懂你的reverse 一樓是對的 02/18 20:47
leiyan:你的12345不見了 02/18 20:47
※ 編輯: tobashi 來自: 114.36.217.113 (02/18 20:48)
tobashi:改成這樣之後輸出還是空白的 真的感謝大家 02/18 20:49
Feis:你的字串認知有誤. 簡單點就 char str[] = "12345"; 02/18 20:56
tobashi:是阿 不過我想知道指標的方法 謝謝 02/18 20:58
cobrasgo:指標你要自己塞,然後最後要記得加null 02/18 21:07
cobrasgo:不過看你的程式,我想你觀念問題還不小,先試著自己檢查 02/18 21:08
cobrasgo:程式有哪些錯誤吧 02/18 21:08
RouterHsieh:先講最明顯的,原po你確定你的字串大小只有5而已嗎XD 02/18 21:14
Feis:要用動態配置的話就是一樓的作法 (句點) *str="12345"; 改掉 02/18 21:21