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)
Ce serait gentil si quelqu'un puisse me dépanner. 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 /*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); }
Partager