字元反轉

Lange_Taylor發表於2019-03-31

編寫一個函式 reverse_string(char * string)(遞迴實現)
實現:將引數字串中的字元反向排列。
要求:不能使用C函式庫中的字串操作函式。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
/*******遞迴的方式寫字串長度函式*******/
int my_strlen(char *str)
{
	if (*str == '\0')    //當傳入的字串中沒有字元
		return 0;		//字串長度為0
	else
		return 1 + my_strlen(str + 1);	/*運用遞迴,每遞迴一次
	長度加1,直到遍歷到的'\0'時結束遞迴*/
}
/*******遞迴方式寫字串反轉*******/
void reverse_string(char *string)
{
	int len = my_strlen(string);//呼叫上面的字串長度函式;
	if (len <= 1)	//當字串長度小於等於1時,不執行;
		return;
	else
	{
		char temp = string[0];	 //將第一個字元的值儲存在temp中;
		string[0] = string[len - 1];//將最後一個字元賦給第一個字元;
		string[len - 1] = '\0';	//將最後一個字元的內容賦為'\0';
		reverse_string(string + 1);//遞迴呼叫下一次反轉;
		string[len - 1] = temp;	//將temp賦給當前的最後一個字元;
	}
}
int main() {
	char ch[] = "qwertyuiop";
	reverse_string(ch);
	printf("%s ", ch);
	printf("\n");
	system("pause");
	return 0;
}

相關文章