C语言每日练习之字符串反转

 更新时间:2021年11月11日 11:48:09   作者:小辉_Super  
这篇文章主要介绍了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;
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • C语言栈的表示与实现实例详解

    C语言栈的表示与实现实例详解

    这篇文章主要介绍了C语言栈的表示与实现,对于数据结构与算法的研究有一定的借鉴价值,需要的朋友可以参考下
    2014-07-07
  • C语言实现简单航班管理系统

    C语言实现简单航班管理系统

    这篇文章主要为大家详细介绍了C语言实现简单航班管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 原码, 反码与补码基础知识详细介绍

    原码, 反码与补码基础知识详细介绍

    这篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法,需要的朋友可以参考下
    2016-12-12
  • Linux编程实现制作文件的ed2k链

    Linux编程实现制作文件的ed2k链

    这篇文章主要介绍了Linux编程实现制作文件的ed2k链的相关资料,需要的朋友可以参考下
    2015-03-03
  • C语言中的5种简单排序算法(适合小白)

    C语言中的5种简单排序算法(适合小白)

    在编程练习时我们经常会遇到一些将一串乱序的数字排列成有序的数列(递增,递减)的问题,以此起到解决问题的效果,下面这篇文章主要给大家介绍了关于C语言中的5种简单排序算法的相关资料,需要的朋友可以参考下
    2023-03-03
  • C语言malloc分配问题详解

    C语言malloc分配问题详解

    这篇文章主要介绍了c语言 malloc函数的分配问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-09-09
  • C++使用适配器模式模拟实现栈和队列

    C++使用适配器模式模拟实现栈和队列

    不论是C语言还是C++,我们都用其对应的传统写法对栈和队列进行了模拟实现,现在我们要用新的方法模拟实现栈和队列,这个新方法就是适配器模式,文章通过代码示例和图文介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • C语言函数指针的老生常谈

    C语言函数指针的老生常谈

    这篇文章主要为大家介绍了vue组件通信的几种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • C++ 再识类和对象

    C++ 再识类和对象

    类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数
    2021-10-10
  • C语言菜鸟基础教程之单精度浮点数与双精度浮点数

    C语言菜鸟基础教程之单精度浮点数与双精度浮点数

    在C语言中,单精度浮点数(float)和双精度浮点数(double)类型都是用来储存实数的,双精度是用记忆较多,有效数字较多,数值范围较大。
    2017-10-10

最新评论