C語言每日練習(xí)之字符串反轉(zhuǎn)
分析
在第18天:利用遞歸函數(shù)調(diào)用方式,將所輸入的字符以相反順序打印出來中,已經(jīng)用過遞歸實(shí)現(xiàn)字符順序輸入,逆序輸出,今天的題目是字符串反轉(zhuǎn),將以字符數(shù)組的形式來進(jìn)行操作。
代碼實(shí)現(xiàn)
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 50 //最大長(zhǎng)度
char *String_Invertion(char *str);
int main()
{
char string[MAX_LENGTH];
printf("請(qǐng)輸入一個(gè)字符串\n");
scanf("%s", string);
String_Invertion(string);
printf("反轉(zhuǎn)后的字符串為%s\n", string);
return 0;
}
/**
* @brief 字符串反轉(zhuǎn)函數(shù)
* @param str 目標(biāo)字符串
* @return 反轉(zhuǎn)后的字符串(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;
}
運(yùn)行結(jié)果

網(wǎng)上參考
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include <stdio.h>
void reverse(char* s)
{
// 獲取字符串長(zhǎng)度
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); // 反轉(zhuǎn)字符串
printf("'%s'\n", s);
return 0;
}
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++動(dòng)態(tài)數(shù)組類的封裝實(shí)例
這篇文章主要介紹了C++動(dòng)態(tài)數(shù)組類的封裝,很重要的概念,需要的朋友可以參考下2014-08-08
C++求四個(gè)正整數(shù)最大公約數(shù)的方法
這篇文章主要介紹了C++求四個(gè)正整數(shù)最大公約數(shù)的方法,涉及C++求余算法的運(yùn)用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05
C++11標(biāo)準(zhǔn)庫bind函數(shù)應(yīng)用教程
bind函數(shù)定義在頭文件functional中,可以將bind函數(shù)看做成一個(gè)通用的函數(shù)適配器,他接收一個(gè)可調(diào)用對(duì)象,生成一個(gè)新的可調(diào)用對(duì)象來"適應(yīng)"原對(duì)象的參數(shù)列表。本文將帶大家詳細(xì)了解一下bind函數(shù)的應(yīng)用詳解2021-12-12
linux c 查找使用庫的cflags與libs的方法詳解
本篇文章是對(duì)在linux中使用c語言查找使用庫的cflags與libs的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

