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++中replace() 函数的基本用法

    C++中replace() 函数的基本用法

    今天就跟大家聊聊有关C++中replace()函数的作用是什么,可能很多人都不太了解,为了让大家更加了解,这篇文章主要给大家介绍了关于C++中replace() 函数的基本用法,需要的朋友可以参考下
    2021-11-11
  • C语言运算符与表达式

    C语言运算符与表达式

    这篇文章主要介绍了C语言运算符与表达式,表达式是C语言的主体。在C语言中,表达式由操作符和操作数组成,更多相关介绍需要的小伙伴可以参考下面文章内容
    2022-07-07
  • exit和atexit的区别详细解析

    exit和atexit的区别详细解析

    以下是对exit与atexit的区别进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-09-09
  • C语言 详解字符串基础

    C语言 详解字符串基础

    在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符,意思是告诉编译器,这不是字符 0,而是空字符
    2022-04-04
  • C++动态数组类的封装实例

    C++动态数组类的封装实例

    这篇文章主要介绍了C++动态数组类的封装,很重要的概念,需要的朋友可以参考下
    2014-08-08
  • C++求四个正整数最大公约数的方法

    C++求四个正整数最大公约数的方法

    这篇文章主要介绍了C++求四个正整数最大公约数的方法,涉及C++求余算法的运用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • C++11标准库bind函数应用教程

    C++11标准库bind函数应用教程

    bind函数定义在头文件functional中,可以将bind函数看做成一个通用的函数适配器,他接收一个可调用对象,生成一个新的可调用对象来"适应"原对象的参数列表。本文将带大家详细了解一下bind函数的应用详解
    2021-12-12
  • linux c 查找使用库的cflags与libs的方法详解

    linux c 查找使用库的cflags与libs的方法详解

    本篇文章是对在linux中使用c语言查找使用库的cflags与libs的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言结构体详细图解分析

    C语言结构体详细图解分析

    C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许你存储不同类型的数据项,本篇让我们来了解C 的结构体
    2022-03-03
  • C++泛型算法的一些总结

    C++泛型算法的一些总结

    以下是对C++中的泛型算法进行了总结介绍。需要的朋友可以过来参考下
    2013-08-08

最新评论