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.