Rechercher : dans
Par :

Fonction de suppression des espaces en C

Dernière réponse le 15 jan 2004 à 11:47:28 Mel, le 15 jan 2004 à 11:01:08 
 Signaler ce message aux modérateurs

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

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

Meilleures réponses pour « Fonction de suppression des espaces en C » dans :
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
Générer des nombres aléatoires efficacement avec rand() VoirGénérer des nombres aléatoires efficacement avec rand() Vous avez peut-être remarqué qu'en C, en utilisant la fonction rand() de la bibliothèque standard, vous obtenez des résultats décevants, trop souvent les mêmes. Prenons un exemple, vous...
Sed - Trucs et astuces VoirSubstitution Affichage Suppression Espace et tabulation Ligne vide Intervalle régulier Divers Joindre des lignes Affichage insensible à la casse Substitution Substituer "foo" par "bar" à chaque ligne Seulement la 1ère...
Langage C - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Langage C++ - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Langage C++ - Les pointeurs VoirComme en langage C, le langage C++ permet d'utiliser des pointeurs pour manipuler des données, mais il introduit aussi le concept de référence, très pratique pour permettre la modification d'une donnée passée en paramètre d'une fonction. Définition...

1

xt@z, le 15 jan 2004 à 11:14:45
  • +1

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.

++

Répondre à xt@z

2

xt@z, le 15 jan 2004 à 11:17:44

J'ai oublié de préciser aussi qu'il faut initialiser ligne, sinon ca va t'afficher n'importe quoi...

Répondre à xt@z

3

 Marden, le 15 jan 2004 à 11:47:28

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 :

ligneSpace[j++]=ligneSpace[i];

Nota : la fonction strLen() recherche (et s'arrête sur) le premier caractère "\0" de la chaîne.

Répondre à Marden