围绕变量“输入”的堆栈已损坏

问题描述:

我刚开始使用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); 
+0

哈哈感谢它的工作。非常感谢你! – 2012-07-31 22:34:21

的问题

%d为整数输入格式指示符,导致编译器假设&输入指向整数,而不是一个字符。

scanf("%d", &input); 

应该是

scanf("%c", &input); 

为什么这破坏了叠层

的原因损坏堆栈是输入在堆栈上分配,和scanf假定它占用4个字节(在32位平台上)而不是实际分配在堆栈上的1个字节。结果,堆栈上的其他内容(其他变量,返回地址等)被覆盖。