C語言每日練習之字符串反轉
分析
在第18天:利用遞歸函數調用方式,將所輸入的字符以相反順序打印出來中,已經用過遞歸實現字符順序輸入,逆序輸出,今天的題目是字符串反轉,將以字符數組的形式來進行操作。
代碼實現
#include <stdio.h> #include <string.h> #define MAX_LENGTH 50 //最大長度 char *String_Invertion(char *str); int main() { char string[MAX_LENGTH]; printf("請輸入一個字符串\n"); scanf("%s", string); String_Invertion(string); printf("反轉後的字符串為%s\n", string); return 0; } /** * @brief 字符串反轉函數 * @param str 目標字符串 * @return 反轉後的字符串(str) */ char *String_Invertion(char *str) { if(str == NULL) return NULL; int len = strlen(str); int i = 0; for(i = 0; i < len / 2; i++) //替換len/2次 { /* (按位)異或交換法,其他交換法參考day27 */ str[i] = str[i] ^ str[len - 1 - i]; str[len - 1 - i] = str[i] ^ str[len - 1 - i]; str[i] = str[i] ^ str[len - 1 - i]; } return str; }
運行結果
網上參考
// Created by www.runoob.com on 15/11/9. // Copyright © 2015年 菜鳥教程. All rights reserved. // #include <stdio.h> void reverse(char* s) { // 獲取字符串長度 int len = 0; char* p = s; while (*p != 0) { len++; p++; } // 交換 ... int i = 0; char c; while (i <= len / 2 - 1) { c = *(s + i); *(s + i) = *(s + len - 1 - i); *(s + len - 1 - i) = c; i++; } } int main() { char s[] = "www.runoob.com"; printf("'%s' =>\n", s); reverse(s); // 反轉字符串 printf("'%s'\n", s); return 0; }
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!