※ 引述《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)