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

C语言使用for循环打印字符串前N个字符无输出问题求助

代码错误排查及修复方案

你的代码存在3处核心问题,逐一说明如下:

  • printf格式符使用错误
    你当前用%s格式符输出inp[i],但inp[i]是单个char类型的字符,%s要求传入的是char*类型的字符串首地址,此处传单个字符会把字符的ASCII值当作内存地址访问,直接触发段错误,导致程序异常退出无输出。如果要打印单个字符,应该使用%c格式符。
  • 循环终止条件错误
    你需要打印前len个字符,数组下标从0开始的情况下,合法下标是0到len-1,所以循环条件应该是i < len而非i <= len,后者会多打印1个超出预期的字符。
  • scanf参数写法不规范
    inp本身就是字符数组的首地址,传入scanf时不需要加取地址符&,虽然部分场景下不会直接报错,但属于错误写法,容易引发其他问题。

修正后完整代码

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

void printFrstChars (char inp[], int len)
{
    for(int i = 0; inp[i] != '\0' && i < len; i++){
        printf("%c", inp[i]);
    }
    // 增加换行避免输出和终端提示符粘连
    printf("\n");
}

int main ()
{   
    int len = 0;
    char inp[100];
    printf("Input string and length:\n");
    scanf("%99s %d", inp, &len);
    printFrstChars(inp, len);
   
    return 0;
}

修改后调用printFrstChars("Example",3)即可得到预期输出Exa。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:06:07