Supprimer espace ou caractères spéciaux en C

Lermit -  
bigmanes Messages postés 11 Statut Membre -
Bonjour, je m'énerve depuis maintenant quelques temps sur une fonction qui consiste à supprimer des caractères placés préalablement dans un tableau dans le main comme ' ' ou '-'

enfin voilà le terminal me met toujours erreur de segmentation et donc je ne sais pas si ma fonction marche

char* copie_sans_separateur (char *s, char sep[])
{int i,j,k;

for (i=0; s[i]!='\0'; i++)

{if (s[i] == sep[j] || s[i] == sep[j+1])

{for (k=i; s[k]!=0; k++)
s[k]=s[k+1];

}

}
return s;
}

merci d'avance pour votre aide

Lermit
Configuration: Linux
Firefox 3.0.4

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    teste :
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    char* suppr(const char *ch,const char* sup){
        char *s=malloc(strlen(ch)+1);
        int k=0;
        for(int i=0;i<strlen(ch)+1;i++){
            int j;
            for(j=0;j<strlen(sup)+1;j++)
                if(ch[i]==sup[j]) break;
            if(j==strlen(sup)+1) s[k++]=ch[i];
        }
        return s;
    }
    
    int main(void){
    
        puts(suppr("$cou-co#u","$#-"));
        return 0;
    }
    

    Cdlt
    1
  2. bigmanes Messages postés 11 Statut Membre 1
     
    Tu n'initialises pas ton "j" je crois... essaie et donne des nouvelles
    1
  3. (Pabix) Messages postés 600 Statut Membre 81
     
    bonjour, sans programme C, la commande (sous Linux) « tr -d ' ' » enlèvera les espaces, et « tr -d '_' » enlèvera les _.

    Sinon, de toutes façons, utiliser j sans l’avoir initialisé, c’est du suicide, relis donc ton code, j ne vaut rien de prévisible.
    0