字符串逆序(c语言)



错误代码

cs 复制代码
#include<stdio.h>

//字符串逆序
void reverse(char arr[], int n)
{
    int j = 0;
    //采用中间值法
    //访问数组中第一个元素和最后一个元素
    //交换他们的值,从而完成了字符串逆序
    //所以这个需要临时变量
    for (j = 0; j <= n / 2; j++)
    {
        char temp = arr[j];
        arr[j] = arr[n - 1 - j];
        arr[n - 1 - j] = temp;
    }
    //直接打印整个数组
      printf("%s",arr);
}



int main()
{
    char arr[10000];
    int i = 0;
    //直接输入整个数组
    scanf("%s", arr);
    int sz = 0;
    //这个循环计算的是除了\0后这个数组元素的个数
    while (arr[sz] != '\0')
    {
        sz++;
    }
    //函数调用
    reverse(&arr, sz);
    return 0;
}
//

运行结果

为什么呢

因为scanf在读取输入时,不能读取空白字符(空格,制表符,换行符),遇到这些就会停止读取

所以到i就停止读取了

知识引用:

gets函数和fgets函数的区别

正确代码

cs 复制代码
#include <stdio.h>
#include <string.h>

int main() 
{
    char str[10001];
    //读取键盘中输入的字符,包括空格
    //需要引头文件    
    fgets(str, 10001, stdin);
    int len = strlen(str);
    //因为fgets把\n读取了,所以需要去除\n的情况
    if (str[len - 1] == '\n') 
    {
        len--;
    }
    for (int i = 0; i < len / 2; i++) 
    {
       // 利用中间值进行交换
        char temp = str[i];
        str[i] = str[len - 1 - i];
        str[len - 1 - i] = temp;
    }
    //直接打印整个数组
    printf("%s\n", str);
    return 0;
}

程序运行


相关推荐
dialect_6 小时前
KMP算法
开发语言·c++·算法
总要学点什么7 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
开开心心_Every9 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
chenbingjie_c9 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
吴卫斌9 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
·present·9 小时前
CSAPP(Bomb lab)
c语言·c++
超级架构师10 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core
叼烟扛炮11 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
LMT流氓兔11 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
专注仿真11 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法