Supprimer espace ou caractères spéciaux en C

Lermit -  
bigmanes Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
bigmanes Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   1
 
Tu n'initialises pas ton "j" je crois... essaie et donne des nouvelles
1
(Pabix) Messages postés 578 Date d'inscription   Statut Membre Dernière intervention   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