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

使用用户输入值后程序停止运行的C语言问题求助

问题原因分析及修复方案

你的程序崩溃是因为代码里存在两个核心错误,直接触发了内存访问异常和未定义行为:

  • scanf格式符误用:你用%s读取单个字符,但%s是用于读取字符串的格式符,它会把输入的字符加上字符串结束符\0一起写入内存。而a是单个char变量,仅占1字节存储空间,写入\0时会超出变量的内存范围,直接导致程序终止。
  • printf格式符误用:打印时用%s,但a是char类型,%s要求传入字符串指针(char*),类型不匹配会引发未定义行为,进一步加剧程序崩溃的可能。

修复后的代码

#include<stdio.h>
//prints a shape using users input
int main() {
    int i, j ;
    char a ;
    i = 0 , j= 0;

    printf("enter your character :");
    scanf("%c", &a); // 改用%c读取单个字符
    // 若输入后按回车,可加getchar(); 吃掉缓冲区的换行符
    for ( j = 0; j < 5; j++)  { 
        for ( i = 0; i < 5; i++) {
         printf("%c", a); // 改用%c打印单个字符
        }
        printf("\n");
    }  
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:25:25