Bonjour,

Je suis nouveau dans ce forum (c'est mon premier post sur ce forum, voire le premier de ma vie sur un forum ) et débutant en langage c.

En fait j'ai un problème dans un exercice de programmation c dont l'intitulé est le suivant:
"Ecrire une fonction char* supblanc1 (char* ch) qui permet de transformer toute séquence de plusieurs blancs en un seul. ATTENTION: la chaine ch doit rester inchangée, c'est la châine renvoyée par la fonction qui contient les changements"

Voici ce que j'ai fait: (je ne crois pas kil ya de problème sur la fonction en elle même mais plutot sur le main)
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
/*lg= longueur de la chaine ch */
/*prev= met 1 si le précédent est un espace ' ' et 0 si non*/
 
char * supblanc (char*ch){
    char *nouv, *aux, *auxn;
    int lg=0, prev=0;
 
    aux=ch+1;
 
    while(*aux){
        if(*aux==' '){
            if(prev==0){
                prev=1;
                lg++;
            }
        }else{
            prev=0;
            lg++;
        }
        aux++;
    }
 
    nouv= (char*) malloc(lg+1);
    aux=ch;
    auxn=nouv;
 
    while(*aux){
        if (*aux==' '){
            if(prev==0){
                prev=1;
                *auxn=*aux;
            }
        }else{
            prev=0;
            *auxn=*aux;
        }
        aux++;
        auxn++;
    }
 
    *auxn='\0';
    return nouv;
}
 
int main(int argc, char** argv) {
    char tab [5000]; char*nouv, *aux;
    aux=(strdup(gets(tab)));
    nouv=(char*) malloc(strlen(aux)+1);
    nouv=supblanc(aux);
    while(*nouv){
        putchar(*nouv++);
    }
    return (EXIT_SUCCESS);
}
Ce serait gentil si quelqu'un puisse me dépanner. Merci