You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言不使用strrev实现各输入字符串反转的程序运行错误原因是什么

C语言字符串反转程序错误排查与实现方案

原代码错误说明

  • 格式符使用错误:打印单个字符str[i][k]时误用了%s格式符。%s要求传入字符串首地址,传入单个字符会触发类型不匹配,直接导致程序运行异常,此处应改为%c格式符。
  • 输出缺少分隔:每个字符串的反转结果输出后没有添加换行符,所有结果会连续拼接,无法区分对应关系。

不使用strrev()的实现方案

你原有的「先遍历找到字符串结束符\0定位长度,再从后向前逐个输出字符」的逻辑是正确的,只需要修正上述错误即可正常运行,修改后的完整代码如下:

#include<stdio.h>
int main()
{
    char str[5][10];
    int i,j,k;
    printf("Enter 5 strings:");
    for(i=0;i<=4;i++)
    {
        // 加长度限制避免输入过长导致数组越界
        scanf("%9s",str[i]);
    }
    for(i=0;i<=4;i++)
    {
        // 统计当前字符串的有效长度
        for(j=0;str[i][j]!='\0';j++);
        // 从最后一位有效字符倒序打印
        for(k=j-1;k>=0;k--)
        {
            printf("%c",str[i][k]);
        }
        // 每个反转结果后输出换行分隔
        printf("\n");
    }
    return 0;
}

补充说明:当前代码每个字符串最多支持输入9个有效字符(最后1位用于存储字符串结束符\0),scanf中的%9s就是用来限制输入长度,避免数组越界的安全写法。

内容的提问来源于stack exchange,提问作者pratik jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 00:15:03