C基礎(chǔ)、經(jīng)典:字符串逆序
分享一道經(jīng)典的C語言題目。
題目:
字符串逆序。如:hello world
轉(zhuǎn)換為dlrow olleh
。
流程圖:
代碼:
左右滑動查看全部代碼>>>
/*
-?程序功能:?字符串反轉(zhuǎn)
-?作者:ZhengN
-?公眾號:嵌入式大雜燴
*/
#include?
#include?
#include?
/*?交換兩數(shù)函數(shù)選擇?*/
#define?FUNC_CHIOCE?1??//?1:方法一??2:方法二??3:方法三
/*?交換兩數(shù)函數(shù)?*/
#if?(FUNC_CHIOCE?==?1)??//?方法一:普通方法
void?change_ab(char?*a,?char?*b)
{
????int?temp?=?0;
????temp?=?*a;
????*a?=?*b;
????*b?=?temp;
}
#elif(FUNC_CHIOCE?==?2)?//?方法二:采用算術(shù)的方法
void?change_ab(char?*a,?char?*b)
{
????*a?=?*a?+?*b;
????*b?=?*a?-?*b;
????*a?=?*a?-?*b;
}
#else??????????????????//?方法三:采用異或的方法(較好的方法)
void?change_ab(char?*a,?char?*b)
{
????*a?=?*a?^?*b;
????*b?=?*a?^?*b;
????*a?=?*a?^?*b;
}
#endif
/*?字符串反轉(zhuǎn)函數(shù)?*/
char?*str_reverse(char*?src_str)
{
????int?str_len?=?strlen(src_str);
????char?*dest_str?=?src_str;
????char?*pHead?=?&src_str[0];??????????//?指向字符串的頭
????char?*pTail?=?&src_str[str_len?-1];?//?指向字符串的尾
????while?((pHead?!=?pTail)?&&?(pHead?????{
????????change_ab(pHead,?pTail);?//?交換頭尾字符
????????pHead++;?//?指向頭部的指針往后移
????????pTail--;?//?指向尾部的指針往前移
????}
????return?dest_str;
}
/*?主函數(shù)?*/
int?main(void)
{
????char?src_str[]?=?"hello?world";
????
????char?*dest_str?=?(char*)malloc(strlen(src_str));
????printf("Before?reverse:?%s\n",?src_str);
????strcpy(dest_str,?str_reverse(src_str));
????printf("After?reverse:?%s\n",?dest_str);
????free(dest_str);
????dest_str?=?NULL;
????return?0;
}
這里有用到交換數(shù)據(jù)的函數(shù)。提供了三種方法,三種方法優(yōu)劣看往期筆記:《C基礎(chǔ)、經(jīng)典:交換a、b值較好的方法?》
運(yùn)行結(jié)果:
猜你喜歡
mqtt應(yīng)用于進(jìn)程間通信
什么是Linux內(nèi)核空間與用戶空間?
1024G 嵌入式資源大放送!包括但不限于C/C++、單片機(jī)、Linux等。在公眾號聊天界面回復(fù)1024,即可免費(fèi)獲??!
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!