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

C语言输出字符串首尾字符代码运行结果异常问题求解

代码错误分析与修复方案

存在的错误点

  • 字符串末尾索引计算错误
    C语言数组下标从0开始计数,长度为n的字符串,末尾有效字符的下标为n-1。你代码中使用string[n+1]属于数组越界访问,读取的是字符串结束符\0之后的未知内存数据,这是输出异常字符的核心原因。
  • scanf参数写法不规范
    数组名string本身就代表数组首地址,不需要额外添加取地址符&,该写法虽然在部分场景下不会直接报错,但存在内存访问隐患。
  • fflush(stdin)为未定义行为
    C语言标准仅规定fflush()对输出流的处理逻辑,对输入流stdin调用fflush的行为没有明确定义,不同编译器实现逻辑差异极大,可能触发不可预期的错误。且%s格式符读取字符串时会自动跳过前置空白字符(包括换行符),不需要额外清空输入缓冲区的操作。
  • 输出缺少换行符
    每次输出两个字符后未打印换行符,三次输出结果会拼接在同一行,不符合预期的每行一组结果的要求。

修正后的代码

#include<stdio.h>
int main(){
    for(int i=0;i<3;i++){
        int n; // 字符串长度
        char string[101];

        scanf("%d %s", &n, string);
        printf("%c%c\n", string[n-1], string[0]);
    }
    return 0;
}

效果验证

针对你提供的测试输入:

5 abcde
6 qwerty
3 ijk

修正后的代码将输出:

ea
yq
ki

完全符合预期结果。

内容的提问来源于stack exchange,提问作者Maz Diaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:36:02