字符串逆序函數-- c語言


目前有兩種思路,一個是申請一片輔助空間,然后將原字符串逆向拷貝到輔助空間,然后輸出;

另一種是原地逆序,不需要額外的輔助空間,方法就是字符串首尾交換。

#include <stdio.h>
#include <string.h>
char* str_reverse(char* str)   //字符指針
{
    int n = strlen(str) / 2;
    int i = 0;
    char tmp = 0;
    for (i = 0; i < n; i++)
    {
        tmp = str[i];
        str[i] = str[strlen(str) - i - 1];   //對調
        str[strlen(str) - i - 1] = tmp;     
    }
    return str;
}
int main()
{
    char s[] = "hello world!";
    printf("str_reverse(s) = %s\n", str_reverse(s));
    return 0;
}

或利用指針特性,直接利用參數,代碼如下:

#include <stdio.h>
#include <string.h>
void str_reverse(char* str)   //字符指針
{
    int n = strlen(str) / 2;
    int i = 0;
    char tmp = 0;
    for (i = 0; i < n; i++)
    {
        tmp = str[i];
        str[i] = str[strlen(str) - i - 1];   //對調
        str[strlen(str) - i - 1] = tmp;     
    }
    return str;
}
int main()
{
    char s[] = "hello world!";
    str_reverse(s);
    printf("str_reverse(s) = %s\n",s );
    return 0;
}

from: https://www.cnblogs.com/lvonve/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM