La stack alrededor de la variable ‘entrada’ estaba dañada

Acabo de comenzar mi lenguaje C y llegué a este error. Intenté buscar en línea, pero otros hilos contienen ARRAY con el que no estoy familiarizado.

#include 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; } 

“Error en la verificación en tiempo de ejecución # 2: la stack alrededor de la variable ‘entrada’ estaba dañada”.

Se apreciará mucho el punto simple.

// Editado

Bueno, me gustaría ingresar el valor “66” para que el resultado sea B. El scanf (“% c, & input) acepta 1 pulsación del teclado, así que eso no es lo que estoy buscando. Sin embargo, gracias por las respuestas

El especificador de formato %d en scanf() requiere un puntero a una variable int , no un puntero a un char . Tratar:

 int input; scanf( "%d", &input); 

El problema

%d es el especificador de formato para la entrada de enteros, lo que lleva al comstackdor a suponer que & input apunta a un entero en lugar de un carácter.

 scanf( "%d", &input); 

debiera ser

 scanf( "%c", &input); 

Por qué esto corrompe la stack

El motivo de la stack dañada es que la entrada se asigna en la stack y scanf asume que ocupa 4 bytes (en una plataforma de 32 bits) en lugar del 1 byte realmente asignado en la stack. Como resultado, otras cosas en la stack (otras variables, dirección de retorno, …) se sobrescriben.