Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur EXC_BAD_ACCESS

Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)

Sujet résolu
    22 février 2020 à 15:41:08

    Bonjour bonjour,

    Je débute en C et j'ai un projet de gestionnaire d'élèves à faire pour les cours. Mais me voilà confronté à un soucis d'allocation de mémoire je crois. En effet lorsque j'exécute le programme je peux entrer le nom, prénom et promotion sans problème mais lorsque je fais le scanf pour la ligne "Voulez vous ajouter d'autres eleves" j'ai une erreur : Thread 1: EXC_BAD_ACCESS (code=1, address=0x0). J'avoue avoir un peu de mal avec les notions de pointeur, d'allocation dans la mémoire donc je suppose que c'est tout bête mais là je cale. Merci d'avance pour votre aide :) 

    PS : je sais pas si ça peut aider mais je code/compile avec XCode

    void ajout_eleve(){
        char *k = NULL;
            printf("Entrez les informations de l eleve :\n");
    
                for (i = 0; i < 30; ++i) {
                        s[i].id = i + 1;
                        printf("\n|| Pour l eleve numero %d ||\n", s[i].id);
                        printf("Entrez le prenom : ");
                        scanf("%s", s[i].prenom);
                        printf("Entrez le nom de famille : ");
                        scanf("%s", s[i].nom);
                        printf("Entrez la promotion : ");
                        scanf("%s", s[i].promotion);
                        printf("Voulez vous ajouter d autres eleves ? ");
                        scanf("%s", k);
                    if (strcmp( k, "non") == 0) break;
                }
    }
    • Partager sur Facebook
    • Partager sur Twitter
      22 février 2020 à 15:56:00

      Hello,

      k ne pointe sur rien. Il faut lui allouer de l'espace pour que le scanf() puisse y ranger les caractèes lus. Mais franchement, a-t-on besoin d'une allocation dynamique pour 4 malheureux caractères ? Écrire char k[4] (3 caractères + le \0) résoudra ton problème.

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        22 février 2020 à 15:58:47

        edgarjacobs a écrit:

        Hello,

        k ne pointe sur rien. Il faut lui allouer de l'espace pour que le scanf() puisse y ranger les caractèes lus. Mais franchement, a-t-on besoin d'une allocation dynamique pour 4 malheureux caractères ? Écrire char k[4] (3 caractères + le \0) résoudra ton problème.


        Je suis parti là-dessus finalement mais merci pour ton aide :)

        char *k;
            k = (char*) malloc(sizeof(char)*4);



        • Partager sur Facebook
        • Partager sur Twitter

        Erreur EXC_BAD_ACCESS

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown