Char** conditional jump or move depends on uninitialised value
Résolu/Fermé
A voir également:
- Char** conditional jump or move depends on uninitialised value
- Or - Guide
- Mouse move - Télécharger - Utilitaires
- Pub l'or mannequin - Forum Cinéma / Télé
- Couleur or photoshop ✓ - Forum Webmastering
- Enter administrator password or power on password - Forum Windows
9 réponses
Utilisateur anonyme
Modifié par le père. le 21/11/2012 à 10:34
Modifié par le père. le 21/11/2012 à 10:34
Bonjour
C'est très mal parti...
Tu te bases sur la taille d'un simple char pour initialiser alphabet, alors qu'alphabet va pointer sur des pointeurs ...
Ce sont alphabet[0], alphabet[1].. qui vont pointer sur des caractères
Quand tu utilises un char **, ta variable ne pointe pas sur un tableau à 2 dimensions.
Elle pointe sur un tableau de pointeurs qu'il faut allouer et initialiser
Ensuite, chacun de ces pointeurs est un char * classique (qu'il faut aussi allouer et initialiser)
pour initialiser (pas testé) :
char **alphabet = malloc(sizeof (char) * 100);
C'est très mal parti...
Tu te bases sur la taille d'un simple char pour initialiser alphabet, alors qu'alphabet va pointer sur des pointeurs ...
Ce sont alphabet[0], alphabet[1].. qui vont pointer sur des caractères
Quand tu utilises un char **, ta variable ne pointe pas sur un tableau à 2 dimensions.
Elle pointe sur un tableau de pointeurs qu'il faut allouer et initialiser
Ensuite, chacun de ces pointeurs est un char * classique (qu'il faut aussi allouer et initialiser)
pour initialiser (pas testé) :
#define NBCHAINES 26 #define NBCARACTERES 10 char **alphabet = malloc(sizeof (char *) * NBCHAINES); int k; for (k=0; k<NBCHAINES; k++) { alphabet[k]=malloc(sizeof(char) * NBCARACTERES); alphabet[k][0]='a'+k; }
Je t'ai pas mis les includes
void free_alphabet(char **alph) { int i = 0; while (alph[i] != NULL) { free(alph[i]); i++; } free(alph); }
int main (void) { char **alphabet = malloc(sizeof (char) * 100); int i = 26; int nb = 0; while (i >= 0) { alphabet[nb][0] = 'a' + nb; nb++; i--; } free_alphabet(alphabet); return (0); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
21 nov. 2012 à 21:02