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

看板C_and_CPP作者 (清兒)時間11年前 (2012/10/23 17:10), 編輯推噓4(408)
留言12則, 7人參與, 最新討論串3/7 (看更多)
※ 引述《famayo (砝碼)》之銘言: : 使用語言是C : 想請問一下假如我要把"how are you" : 反轉成"you are how" 我該怎麼做呢 : 目前我有個想法 : 就是用字串陣列來儲存strtok分解這句子的結果 : 之後再將字串陣列反轉過來 Q_Q 我先承認 i am so poor ~><~ 請不要把以下 code 用於啟動核彈之類的地方 #include <stdio.h> #include <string.h> void swapChars(char * ,char * ); void swap(char * ,int unsigned ,int unsigned ); void swap(char * ); void swapChars(char * a,char * b) { (* a) ^= (* b); (* b) ^= (* a); (* a) ^= (* b); } void swap(char * chars,int unsigned iBegin,int unsigned cSize) { for (unsigned int i = 0;i < (cSize / 2) ;++ i) { swapChars((chars + i + iBegin),(chars + iBegin + cSize -1 - i)); } } void swap(char * chars) { int unsigned toaolSize = strlen(chars); int unsigned cBegin = 0,cSize = 0; swap(chars,0,toaolSize); for (unsigned int i = 0,iEnd = toaolSize;i < iEnd;++ i) { switch(* (chars + i)) { case ' ': cBegin = i + 1; cSize = 0; break; default: ++ cSize; if (i == iEnd - 1) {//last? swap(chars,cBegin,cSize); } else if (i + 1 <= iEnd - 1) {//0~n if (* (chars + i + 1) == ' ') { swap(chars,cBegin,cSize); } else { } } break; } } //01234567890 //uoy era woh } 好啦~我猜的 主要是關於那上色的地方的觀念吧? 不用暫存temp 不過完全不用應該是不可能吧? 至少還有要判斷loop要跑多長之類的 寫code當然完全不會這樣寫 ~><~ 這只是好玩 因為左轉之後我就 忘記這段東西是在寫啥鬼了 -.- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.171.125.92

10/23 18:13, , 1F
^=只能用在保證是正數,負數會爆炸
10/23 18:13, 1F

10/23 18:21, , 2F
char 有負的~?
10/23 18:21, 2F

10/23 19:15, , 3F
unsigned char 才沒有吧?
10/23 19:15, 3F

10/23 19:16, , 4F
QaQ~我沒說清楚~我的意思是在這例子下
10/23 19:16, 4F

10/23 22:19, , 5F
誤會了 XD
10/23 22:19, 5F

10/24 01:07, , 6F
a, b指向同位址會出問題
10/24 01:07, 6F

10/24 04:33, , 7F
不過這個case下應該不會有同位址的問題吧@@
10/24 04:33, 7F

10/25 12:14, , 8F
XOR swap 是對純數作運算,請問為什麼負數會爆炸?
10/25 12:14, 8F

10/25 12:18, , 9F
char 有可能是有號數, 看編譯器怎麼實作
10/25 12:18, 9F

10/25 12:48, , 10F
請問如果 char 是有號數會發生什麼事?
10/25 12:48, 10F

10/25 12:52, , 11F
有請找文達人 愛迪生~
10/25 12:52, 11F

10/25 13:43, , 12F
在 2's complement 應該沒有問題吧?
10/25 13:43, 12F
文章代碼(AID): #1GXbyMar (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1GXbyMar (C_and_CPP)