使用用户输入值后程序停止运行的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
相关产品推荐
相关产品推荐

