围绕变量“输入”的堆栈已损坏
问题描述:
我刚开始使用C语言,并且遇到此错误。我试图在网上查找,但其他线程包含我不熟悉的ARRAY。围绕变量“输入”的堆栈已损坏
#include<stdio.h>
int main(void){
char input;
printf("ASCII testing\n");
scanf("%d", &input); //the error occurs here but would like to know the solution
printf("answer is : %c\n" , input);
system("pause");
return 0;
}
“运行时检查失败#2 - 变量'输入'周围的堆栈已损坏。”
简单点出我将非常感激
//编辑
嗯,我想输入值“66”,这样的结果将是B. scanf函数(“%C,&输入)接受来自键盘1次击键所以这不是我所期待的。但无论如何,感谢您的答复
答
在scanf()
的%d
格式说明需要一个指向int
变量,而不是一个指向char
。试试:
int input;
scanf("%d", &input);
答
的问题
%d
为整数输入格式指示符,导致编译器假设&输入指向整数,而不是一个字符。
scanf("%d", &input);
应该是
scanf("%c", &input);
为什么这破坏了叠层
的原因损坏堆栈是输入在堆栈上分配,和scanf假定它占用4个字节(在32位平台上)而不是实际分配在堆栈上的1个字节。结果,堆栈上的其他内容(其他变量,返回地址等)被覆盖。
哈哈感谢它的工作。非常感谢你! – 2012-07-31 22:34:21