2012-07-31 2 views
1

Je viens de commencer mon langage C et je suis arrivé à cette erreur. J'ai essayé de chercher en ligne mais d'autres threads contiennent ARRAY que je ne connais pas. "Echec de la vérification au moment de l'exécution n ° 2 - La pile autour de la variable" entrée "était corrompue."La pile autour de la variable 'entrée' était corrompue

simple point de départ sera très appréciée

// Edité

Eh bien, je voudrais entrer la valeur "66" de sorte que le résultat serait B. Le scanf ("% c, entrée &) accepte 1 combinaison de touches du clavier de sorte que ce n'est pas ce que je cherche. Mais quand même, je vous remercie pour les réponses

Répondre

1

le spécificateur de format %d en scanf() nécessite un pointeur vers une variable int, pas un pointeur vers un char. Essayez :

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

lol merci ça marche. Merci beaucoup! –

5

Le problème

%d est le spécificateur de format pour l'entrée entier, conduisant le compilateur de supposer que & points d'entrée à un nombre entier plutôt que d'un caractère.

scanf("%d", &input); 

devrait être

scanf("%c", &input); 

Pourquoi cette corrompt la pile

La raison de l'empilement corrompu est que l'entrée est alloué sur la pile, et scanf suppose qu'il occupe 4 octets (sur une plateforme 32 bits) plutôt que le 1 octet réellement alloué sur la pile. Par conséquent, d'autres éléments de la pile (autres variables, adresse de retour, ...) sont remplacés.

Questions connexes