【C語言】字串逆轉
阿新 • • 發佈:2018-12-19
例如: 有一個字元陣列的內容為:“student a am i”, 請你將陣列的內容改為"i am a student". (要求:不能使用庫函式。 ) 分析: 這裡需要兩次逆轉,先將字串整體逆轉,再將以空格分割的子串逆轉 程式碼部分:
先用my_strlen函式計算字串大小:
int my_strlen(char * str)
{
int count = 0;
while(*str)
{
count++;
str++;
}
return count;
}
逆轉從 start 到 end 之間的字串:
void reverse_str(char* start,char * end) { while(start < end) { //儲存頭的內容 char temp = *start; //把頭的內容置換為尾的內容 *start = *end; //把尾的內容置換為頭的內容 *end = temp; //頭向後移動,尾向後移動 start++; end--; } }
子串逆轉:
void reverse(char* str) { char* start = str; char* end = str + my_strlen(str) - 1; //字串的起始指標 char* cur_start = str; //整體逆轉一遍 reverse_str(start,end); //區域性子串逆轉 while(*cur_start) { //區域性起點 char* start = cur_start; //尋找子串的尾點 while((*cur_start != ' ') && (*cur_start != '\0')) { cur_start++; } //逆轉子串 reverse_str(start,cur_start - 1); if(*cur_start == ' ') { cur_start++; } } }
int main()
{
char str[100];
gets(str);
reverse(str);
printf("%s\n",str);
system("pause");
return 0;
}