Bonjour,
Je fais appelle à vous car j'ai besoin d'aide pour un bout de code C qui récupère et stock les arguments de la LDC dans un tableau de strings.
Clairement ce qu'il me faut c'est :
- je tape des "trucs" sur la ligne de commande :
./recupldc minou le gros chat
- et le programme construit un tableau de ces "trucs" du type :
arglist = ["minou", "le", "gros", "chat"]
Le but étant bien sûr d'utiliser chaque élément passé sur la LDC dans la suite du programme. Admettons ici qu'on veuille juste les imprimer à l'écran pour avoir :
minou
le
gros
chat
Voici ce que j'ai :
J'ai mis deux malloc() qui sûrement scandaleusement mal utilisés, je voudrais justement savoir comment les utiliser, est-ce qu'il faut faire un seul malloc() du type : malloc(argc * (char*)) ou bien un malloc() pour la taille du tableau puis un autre pour la taille de chaque chaîne qu'on ajoutera au tableau ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 int main(int argc, char *argv[]) { int i = 0; char **arglist; if (argc < 2) { printf("pas d'arguments sur la LDC\n"); return(EXIT_FAILURE); } arglist = malloc(argc * sizeof(char*)); if (arglist != NULL) for (i=1 ; i<argc ; i++) // i=1 : pas prendre le nom du prog { arglist[i-1] = malloc(sizeof(char*)); // oui je sais y'a déjà un malloc au-dessus. arglist[i-1] = strdup(argv[i]); } for (i=0 ; i<argc-1 ; i++) printf("%s\n", arglist[i]); return EXIT_SUCCESS; }
J'apprends le C par moi-même et j'ai beaucoup appris en suivant les tutos et les forums de ce site. Toutefois si jusque là je n'avais pas de problème pour l'allocation dynamique c'est parce que je me contentais de l'appliquer à des tableaux d'entier, pas à des tableaux de chaines.
Merci d'avance pour votre aide :-) !!
Partager