[問題] 反轉字串裡面的字元

看板C_and_CPP作者 (砝碼)時間13年前 (2012/10/23 09:15), 編輯推噓12(12025)
留言37則, 13人參與, 最新討論串1/7 (看更多)
使用語言是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

10/23 10:07, , 1F
有bug~ 你忘記要把空格加回去 XD
10/23 10:07, 1F
感謝指正 已經修改了~!

10/23 10:27, , 2F
阿 我還真的沒想到這個
10/23 10:27, 2F

10/23 10:41, , 3F
面試題 ?
10/23 10:41, 3F
別的板上看到的

10/23 10:52, , 4F
我的做法 不知道這樣好不好http://ideone.com/BqpR2t
10/23 10:52, 4F

10/23 11:01, , 5F
大大剛剛寫的嗎
10/23 11:01, 5F

10/23 11:05, , 6F
恩..不過是用C++.QQ
10/23 11:05, 6F
恩恩 有些C++語法看不懂XD ※ 編輯: famayo 來自: 140.112.218.97 (10/23 11:06)

10/23 11:07, , 7F
主要是提供一個遞迴的做法
10/23 11:07, 7F

10/23 11:34, , 8F
你的程式怪怪的,這裡不需要使用2維Array
10/23 11:34, 8F

10/23 11:35, , 9F
需要的是記錄每一個字開始的位置以及長度
10/23 11:35, 9F

10/23 11:36, , 10F
然後根據這樣的序列,把資料反序取出後放到新的Array
10/23 11:36, 10F

10/23 11:40, , 11F
我的想法是先把整串字反轉 -> uoy era woh
10/23 11:40, 11F

10/23 11:41, , 12F
然後再把每個字再反轉一次, ex. uoy -> you
10/23 11:41, 12F

10/23 11:45, , 13F
用二維陣列去接strtok的回傳,正常應該是不能編譯才對
10/23 11:45, 13F
不過我真的過編譯這關了 但是執行後會有錯誤 被迫停止程式 想問一下為何陣列不能接strtok的回傳阿@@?

10/23 12:03, , 14F
C++用sstream會不會比較方便呢?(思
10/23 12:03, 14F
※ 編輯: famayo 來自: 140.112.218.97 (10/23 12:11)

10/23 13:41, , 15F
我的作法是,先整個 strrev,再依序取 strtok,取出再 strrev
10/23 13:41, 15F

10/23 13:46, , 16F
啊!! 和 superbuddha 一樣了 !!
10/23 13:46, 16F

10/23 14:08, , 17F
假如面試可以考這簡單就好了QQ
10/23 14:08, 17F

10/23 14:18, , 18F
因為strtok回傳的是char* 你用一維的指標陣列去接就好
10/23 14:18, 18F

10/23 14:28, , 19F
我搞錯了,用c編譯是警告,c++才會錯誤,原因就樓上說的
10/23 14:28, 19F

10/23 14:28, , 20F
@cuteclare : @@ 當時我以為這題要解得好不是件好事說 @@
10/23 14:28, 20F

10/23 14:37, , 21F
@EdisonX 解的好 跟解的出來是兩回是啊
10/23 14:37, 21F

10/23 14:38, , 22F
如果只是面試~可能要求解得出來就好吧...
10/23 14:38, 22F

10/23 14:38, , 23F
如果當作論文題目來作...當然沒這簡單
10/23 14:38, 23F

10/23 19:56, , 24F
請問是不是要[3][5]呢 = =? 感覺好像少了一列
10/23 19:56, 24F

10/23 20:22, , 25F
0 1 2 共三列阿
10/23 20:22, 25F

10/23 20:28, , 26F
這樣宣告的地方不是要[3][5]嗎 還是我記錯了 囧
10/23 20:28, 26F

10/23 20:29, , 27F
阿 我也不確定= = 很久沒寫C了XD
10/23 20:29, 27F

10/23 20:30, , 28F
XD 陣列宣告string[3][5] 然後列0~2 行0~4這樣 QQ
10/23 20:30, 28F

10/23 20:56, , 29F
你剛剛去查書嗎@@?
10/23 20:56, 29F

10/23 21:19, , 30F
沒有查阿 因為我記得的是那樣 @@!
10/23 21:19, 30F

10/23 21:40, , 31F
10/23 21:40, 31F

10/23 21:42, , 32F

10/23 21:46, , 33F
推 linotwo :)
10/23 21:46, 33F

10/23 21:47, , 34F
從字串最後面往前依序取出 token,每取出一個就寫入一個。
10/23 21:47, 34F

10/23 22:04, , 35F
http://codepad.org/0qpfd0jT 這是參考你的想法寫的 XD
10/23 22:04, 35F

10/23 22:16, , 36F
感謝各位 晚點欣賞XD
10/23 22:16, 36F

10/25 13:41, , 37F
10/25 13:41, 37F
文章代碼(AID): #1GXU-p85 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1GXU-p85 (C_and_CPP)