看板 C_and_CPP 關於我們 聯絡資訊
使用語言是C 想請問一下假如我要把"how are you" 反轉成"you are how" 我該怎麼做呢 目前我有個想法 就是用字串陣列來儲存strtok分解這句子的結果 之後再將字串陣列反轉過來 實作如下 想請各位看看有哪邊要修正 int i=0; char string1[]="how are you"; /*要反轉的目標*/ char delimi[]=" "; /*以用空白為分界分割*/ char acepstring[2][5]; /*接收token的字串陣列*/ char revstring[2][5]; /*反轉後的字串陣列*/ acepstring[0][5]=strtok(string1,delimi); for(i;i<3;i++) /*分割成token*/ { acepstring[i][5]=strtok(NULL,delimi); } for(i=0;i<3;i++) /*反轉字元*/ { revstring[i][5]=acepstring[2-i][5] } for(i=0;i<3;i++) printf("%s ",revstring[i]); 最後出來結果是 NULL ... 感謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.218.97
shiengchyi:有bug~ 你忘記要把空格加回去 XD 10/23 10:07
感謝指正 已經修改了~!
famayo:阿 我還真的沒想到這個 10/23 10:27
EdisonX:面試題 ? 10/23 10:41
別的板上看到的
ZanFu5566:我的做法 不知道這樣好不好http://ideone.com/BqpR2t 10/23 10:52
famayo:大大剛剛寫的嗎 10/23 11:01
ZanFu5566:恩..不過是用C++.QQ 10/23 11:05
恩恩 有些C++語法看不懂XD ※ 編輯: famayo 來自: 140.112.218.97 (10/23 11:06)
ZanFu5566:主要是提供一個遞迴的做法 10/23 11:07
shiengchyi:你的程式怪怪的,這裡不需要使用2維Array 10/23 11:34
shiengchyi:需要的是記錄每一個字開始的位置以及長度 10/23 11:35
shiengchyi:然後根據這樣的序列,把資料反序取出後放到新的Array 10/23 11:36
superbuddha:我的想法是先把整串字反轉 -> uoy era woh 10/23 11:40
superbuddha:然後再把每個字再反轉一次, ex. uoy -> you 10/23 11:41
serikafan:用二維陣列去接strtok的回傳,正常應該是不能編譯才對 10/23 11:45
不過我真的過編譯這關了 但是執行後會有錯誤 被迫停止程式 想問一下為何陣列不能接strtok的回傳阿@@?
tjjh89017:C++用sstream會不會比較方便呢?(思 10/23 12:03
※ 編輯: famayo 來自: 140.112.218.97 (10/23 12:11)
EdisonX:我的作法是,先整個 strrev,再依序取 strtok,取出再 strrev 10/23 13:41
EdisonX:啊!! 和 superbuddha 一樣了 !! 10/23 13:46
cuteclare:假如面試可以考這簡單就好了QQ 10/23 14:08
Cypresslin:因為strtok回傳的是char* 你用一維的指標陣列去接就好 10/23 14:18
serikafan:我搞錯了,用c編譯是警告,c++才會錯誤,原因就樓上說的 10/23 14:28
EdisonX:@cuteclare : @@ 當時我以為這題要解得好不是件好事說 @@ 10/23 14:28
cuteclare:@EdisonX 解的好 跟解的出來是兩回是啊 10/23 14:37
cuteclare:如果只是面試~可能要求解得出來就好吧... 10/23 14:38
cuteclare:如果當作論文題目來作...當然沒這簡單 10/23 14:38
b9307025:請問是不是要[3][5]呢 = =? 感覺好像少了一列 10/23 19:56
famayo:0 1 2 共三列阿 10/23 20:22
b9307025:這樣宣告的地方不是要[3][5]嗎 還是我記錯了 囧 10/23 20:28
famayo:阿 我也不確定= = 很久沒寫C了XD 10/23 20:29
b9307025:XD 陣列宣告string[3][5] 然後列0~2 行0~4這樣 QQ 10/23 20:30
famayo:你剛剛去查書嗎@@? 10/23 20:56
b9307025:沒有查阿 因為我記得的是那樣 @@! 10/23 21:19
victor600:這樣呢? http://ideone.com/mM94Tz 10/23 21:40
linotwo:http://codepad.org/sKVRJnSX 10/23 21:42
EdisonX:推 linotwo :) 10/23 21:46
linotwo:從字串最後面往前依序取出 token,每取出一個就寫入一個。 10/23 21:47
b9307025:http://codepad.org/0qpfd0jT 這是參考你的想法寫的 XD 10/23 22:04
famayo:感謝各位 晚點欣賞XD 10/23 22:16
bigpigbigpig:C++ 版本:http://codepad.org/4Dn5rucj 10/25 13:41