Bonjour,
Je souhaite utiliser la fonction str_split proposée ici. Comment connaître la taille du tableau de chaînes créés afin de le parcourir ?
Bonjour,
Je souhaite utiliser la fonction str_split proposée ici. Comment connaître la taille du tableau de chaînes créés afin de le parcourir ?
Bonjour,
Il faut parcourir le tableau pour en connaitre la taille :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 size_t size = 0; char **result = str_split(......); if(result != NULL) { while(result[size] != NULL) { ++size; } printf("la taille du tableau est %d\n", size); } else { printf("la fonction str_split a échoué\n"); }
Je souhaiterais passer le tableau précédemment obtenu (appelé fields) en paramètre à une fonction :
void addProfileLine(char fields[], profile profiles[], int profilescount);
Dans cette fonction je veux remplir la structure profile à partir de fields[1], fields[2]...
Cette syntaxe provoque des warnings à la compilation :
L. 120, c.-à-d. lors de l'appel à la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 "add_profiles.c", line 120: warning: argument #1 is incompatible with prototype: prototype: pointer to char : "add_profiles.h", line 10 argument : pointer to pointer to char
addProfileLine(fields, profiles, profilescount);
J'ai également des warnings dans la fonction elle-même :
Lorsque j'essaie de récupérer les valeurs de fields[0], fields[1], etc. pour remplir ma structure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 "add_profiles.c", line 202: warning: improper pointer/integer combination: arg #1 "add_profiles.c", line 204: warning: improper pointer/integer combination: op "=" "add_profiles.c", line 206: warning: improper pointer/integer combination: op "=" "add_profiles.c", line 208: warning: improper pointer/integer combination: op "=" "add_profiles.c", line 210: warning: improper pointer/integer combination: op "="
Tu peux poster le code qui crée ce problème ?
EDIT : ton compilateur dit :
Cela veut dire que tu passe à la fonction un tableau de chaine à la place d'une chaine seule. (tu donnes un char ** à la place d'un char *)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 "add_profiles.c", line 120: warning: argument #1 is incompatible with prototype: prototype: pointer to char : "add_profiles.h", line 10 argument : pointer to pointer to char
fields est un tableau de chaîne retourné par str_split.
Quel doit-être le prototype de la fonction addProfile ? Ceci peut-il fonctionner ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void addProfileLine(char **fields, profile profiles[], int profilescount) { char tmp[100]; strcpy(tmp, fields[0]); //... }
Partager