[C] Compilateur plante sur un scanf

Résolu/Fermé
quentin - 19 déc. 2007 à 18:40
 quentin - 19 déc. 2007 à 18:46
Bonjour,

je suis en train de creer un sous programme pour un projet personel en C et j'obtiens une erreur qui me fait planter le compilateur à cet endroit du programme:

scanf("%d", l_choix);


Voilà le programme:

void nouvelle_partie()
{
clrscr();
                char personage[20];
                unsigned int l_choix;
gotoxy(25,2);
printf("Nouvelle Partie: \n\n\n");
printf("Nommez votre personage: ");
scanf("%s", personage);

        do{

        printf("\n\nChoisissez votre race: \n\n");
        printf("1- Mage Humain\n\n");
        printf("2- Archer Elfe\n\n");
        printf("3- Guerrier Nain\n\n");
        printf("4- Retour au menu\n\n");
        printf("5- Quitter\n\n");

                printf("Choisissez votre race: ");
                scanf("%d", l_choix);

                switch(l_choix){
                        case 1: humain();                break;
                        case 2: elfe();                  break;
                        case 3: nain();                  break;
                        case 4: menu();                  break;
                        case 5: break;
                }

                if(l_choix!=1 && l_choix!=2 && l_choix!=3 && l_choix!=4 && l_choix!=5)
                {
                printf("Merci de saisir un nombre entre 1 et 5");
                getch();
                }

        }while(l_choix!=5);
}


Le message d'erreur vient de windows, il s'agit, à mon avis, d'un dépassement de mémoire (mais je n'en suis pas vraiment sur)...
Voilà le message d'erreur:

Le projet Project1.exe a provoqué une classe d'exception EAccessViolation avec le message 'Violation d'accès à l'adresse 326636F7. Ecriture de l'adresse 00401214'. Processus stoppé. Utilisez le pas-à-pas ou Exécuter pour continuer.


Après avoir fait ok, je peux quitter en fermant le compilo, mais si je veux fermer mon invité de commande, il plante et me fait planter le compilo.

Merci d'avance de l'aide que vous pourrez m'apporter,
Quentin.

4 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
19 déc. 2007 à 18:42
il manque le & avant l_choix
1
Je viens de trouver tout seul, il manquait le & la variable... :roll:
0
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
19 déc. 2007 à 18:45
https://en.wikipedia.org/wiki/Scanf

int main(void) {
int n;
while (scanf("%d", &n) > 0) // numeric &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
printf ("%d\n", n);
return 0;
}

int main(void) {
char word[20];
scanf("%19s", word); // string, pas de &&&&&&&&&&&&&&&&&
printf ("%s\n", word);
return 0;
}
0
merci, je viens de me rendre compte de cette erreur bête, c'est toujours au moment de demander de l'aide que je finis par trouver... *honte* lol
problème résolu.
0