Fonction de suppression des espaces en C
Mel
-
outbreak -
outbreak -
Bonjour,
J'ai créé une fonction C qui permet de supprimer les espaces d'une chaine de caractères mais elle ne fonctionne pas correctement. Pourquoi ???? Merci de votre aide
J'ai créé une fonction C qui permet de supprimer les espaces d'une chaine de caractères mais elle ne fonctionne pas correctement. Pourquoi ???? Merci de votre aide
void suppSpace(char * ligneSpace){ char ligne[80]; int nb; int i=0; int j=0; nb=strlen(ligneSpace); for(i;i<nb;i++) { if((ligneSpace[i]!=' ') || (ligneSpace[i]!='\n')) {ligne[j]=ligneSpace[i]; j=j+1;} } strncpy(ligneSpace,ligne,80);}
A voir également:
- Fonction de suppression des espaces en C
- Forcer suppression fichier - Guide
- Fonction si et - Guide
- Espaces insécables - Guide
- Espace de stockage gmail plein - Guide
- Suppression compte gmail - Guide
4 réponses
Vrai pour la limite ( i <= nb, ce qui permet de transférer le "\0" terminal ) et l'opérateur logique ( && ), mais évidemment pas pour l'indice ( j ) à conserver.
L'utilisation du tableau intermédiaire ( ligne ) est inutile, on peut utiliser directement le tableau d'entrée et supprimer l'appel à strnCopy(), en codant :
Nota : la fonction strLen() recherche (et s'arrête sur) le premier caractère "\0" de la chaîne.
L'utilisation du tableau intermédiaire ( ligne ) est inutile, on peut utiliser directement le tableau d'entrée et supprimer l'appel à strnCopy(), en codant :
ligneSpace[j++]=ligneSpace[i];
Nota : la fonction strLen() recherche (et s'arrête sur) le premier caractère "\0" de la chaîne.
slt, ca résoudra peut etre pas ton pb, mais je pense que tu peux améliorer 2-3 trucs
dans ton for mets i inférieur ou égal à nb
vire la variable j de la fonction et mets i à la place dans ton code puisque que les 2 var varient à l'identique
et surtout dans la condition, j'aurais mis un "et" et pas "ou"... a mon avis c ca qui est mauvais mais je me plante peut etre.
++
dans ton for mets i inférieur ou égal à nb
vire la variable j de la fonction et mets i à la place dans ton code puisque que les 2 var varient à l'identique
et surtout dans la condition, j'aurais mis un "et" et pas "ou"... a mon avis c ca qui est mauvais mais je me plante peut etre.
++
j'ai oublié de préciser aussi qu'il faut initialiser ligne, sinon ca va t'afficher n'importe quoi...
voiçi un ti programme en c qu j'ai realisé qui va supprimer les aspaces d'une chaine.faire le transformer dans ta fonction.gd luck
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{int j,i,n,k=0;
char *p;
p=malloc(100*sizeof(char));
puts("entrer une phrase \a au maximum comport 100 carracters \a");
gets(p);
n=strlen(p);
for(i=0;i<n;i++)
{if(p[i]==' ')
{for(j=i;j<n;j++)
{p[j]=p[j+1];}}}
printf("%s\n",p);
system("PAUSE");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{int j,i,n,k=0;
char *p;
p=malloc(100*sizeof(char));
puts("entrer une phrase \a au maximum comport 100 carracters \a");
gets(p);
n=strlen(p);
for(i=0;i<n;i++)
{if(p[i]==' ')
{for(j=i;j<n;j++)
{p[j]=p[j+1];}}}
printf("%s\n",p);
system("PAUSE");
return 0;
}