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;
}
}
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.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
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);
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.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent