字符串逆序(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;
}

程序运行


相关推荐
混迹网络的权某10 分钟前
蓝桥杯真题——乐乐的序列和(C语言)
c语言·算法·蓝桥杯
wheeldown13 分钟前
【数据结构】快速排序
c语言·数据结构·算法·排序算法
神仙别闹13 分钟前
基于 Java 语言双代号网络图自动绘制系统
java·开发语言
猫爪笔记21 分钟前
JAVA基础:单元测试;注解;枚举;网络编程 (学习笔记)
java·开发语言·单元测试
aqua353574235825 分钟前
杨辉三角——c语言
java·c语言·数据结构·算法·蓝桥杯
API快乐传递者26 分钟前
用 Python 爬取淘宝商品价格信息时需要注意什么?
java·开发语言·爬虫·python·json
fengbizhe32 分钟前
qt获取本机IP和定位
开发语言·c++·qt·tcp/ip
yang_shengy36 分钟前
【JavaEE】认识进程
java·开发语言·java-ee·进程
无敌最俊朗@41 分钟前
unity3d————屏幕坐标,GUI坐标,世界坐标的基础注意点
开发语言·学习·unity·c#·游戏引擎
重生之我是数学王子1 小时前
网络编程 UDP编程 Linux环境 C语言实现
linux·c语言·开发语言·网络·网络协议·udp