看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《famayo (砝碼)》之銘言: : 使用語言是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 ... : 感謝各位 void StringReverse( char *str , unsigned int len ){ char *end = str + len, *idx , *idxS = str - 1 , *idxE = end; while( ++idxS < --idxE ){ *end = *idxS; *idxS = *idxE; *idxE = *end; } idx = str - 1; while( idx < end ){ *end = 32; idxS = idx; while( *(++idx) != 32 ); idxE = idx; while( ++idxS < --idxE ){ *end = *idxS; *idxS = *idxE; *idxE = *end; } } *end = 0; } // 代個字串來試試 int main(int argc, _TCHAR* argv[]){ char CASS[] = "how are you"; StringReverse( CASS , strlen(CASS) ); printf( CASS ); system("pause"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: FHTsai 來自: 60.250.89.91 (10/24 12:38)