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