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;
}