Bonjour,
Voilà, je voudrais avoir vos avis sur la fonction que j'ai écrite. Elle permet de ressortir un bout de chaine compris entre 2 "#". Je débute en C donc je voudrais savoir quelle chose éviter, etc...
Merci
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 char *get_label(char * cmd) { char *label; char c = cmd[0]; int pos_1 = 0; int pos_2 = 0; int i = 0; int cpt = 0; int len = strlen(cmd); /* il existe au moins un # dans la cmd */ if (strstr(cmd, "#") != NULL) { /*printf("parcours de la chaine : %s de taille : %d\n", cmd, len);*/ /* parcours de la chaine cmd */ while (i < len) { /* si le caractère courant est un # est que c'est le 1er */ if (c == '#' && cpt == 0) { pos_1 = i; cpt++; } else if (c == '#' && cpt == 1) /* un 2eme # est trouvé */ { pos_2 = i; cpt++; } c = cmd[i]; i++; } /* récupération de la chaine contenu entre les 2 positions */ label = (char *)realloc(label, pos_2-pos_1-3); if (label != NULL) { cpt = 0; for (i = pos_1+1; i < pos_2-2; i++) { label[cpt] = cmd[i]; cpt++; } } /* debug printf("pos_1 : %d\n", pos_1); printf("pos_2 : %d\n", pos_2); printf("nb de # : %d\n", cpt); printf("label :'%s'\n", label); printf("-->fin de get_label\n");*/ } return label; }
Partager