C 反轉字符串中的字符

1.題目

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

2.程序代碼

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <Windows.h>
#include <assert.h>//assert函數是用來判斷括號內是否爲真,若不爲真,
                        //則後面的程序不執行

int my_strlen(const char *string)//計算字符串長度的函數
{
    assert(string);

    int count = 0;

    while(*(string++))
    {
        count++;
    }
    return count;
}

void reverse_string(char *string)
{
    assert(string);

    int len = my_strlen(string);//求出字符串長度
    char temp = 0;

    if (len > 0)
    {
        temp = *string;//把該字符串的第一個字符賦給temp
        *string = string[len - 1];//把該字符串的最後一個字符賦給第一個位置
        string[len - 1] = '\0';//刪掉最後面的字符
        reverse_string(string + 1);
        string[len - 1] = temp;//把此時的第一個字符賦給此時的最後一個位置
    } 
}

int main()
{
    char arr[20] = "0";

    printf("please input a character string:");
    scanf("%s", &arr);
    //printf("%d\n", my_strlen(arr));//測試求字符串長度的函數是否正確
    reverse_string(arr);
    printf("%s\n", arr);

    system("pause");
    return 0;
}

3.執行結果

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章