|
|
|
|
salut =)
tu veux pas utiliser la STL, ou autre bibliothèque où tout est déjà fait ? sinon, je ferais un truc comme ça (algo, tu mettras en c): tant que caractères si chaine[index] != caractere_a_enlever buffer[index2] = chaine[index] index2 ++ fin si index ++ fin Le Parisien, il vaut mieux l'avoir en journal !!! :-P
|
ben comme j'ai mis plus haut : tu boucles tant qu'il y a des caractères à lire. Si le caractère lu est celui a supprimer, tu ne fais rien, sinon tu le mets dans ta nouvelle chaine.
il te faut donc 2 index et 2 chaines de caractères. Le Parisien, il vaut mieux l'avoir en journal !!! :-P |
Si tu doit supprimer un caractere dans la chaine directement (sans renvoyer une nouvelle chaine), il suffit de décaler tout les caractères, qui sont à droite de celui à supprimer, d'un caractère sur la gauche:
chaine de départ : chaine1 => 'b'o'n'j'o'u'r' suppression de j : chaine1 => 'b'o'n' 'o'u'r' décalage des caractères : chaine1 => 'b'o'n'o'u'r' ' je pense qu'en C sa devrait donner un truc du genre : pos <= position du caractère a supprimer. Dans bonjour, pos=3 i=pos;
while(chaine1[i]!='\0'){
chaine1[i]=chaine1[i+1];
i++;
} |
dsl j'ai ce même prob et j'ai pas trouver de solution
car c'est correct i+1 et i mais ça marche pas par exemple si nous avons une chaine eeeee et on veut supprimer le 'e' alors qui me donne le solution |
ca, c'est une fonction qui marche!
void supprime(char *texte, char x) // supprime x dans la chaine
{
int p ,i;
for(i=0;texte[i] != '\0';i++)
{if (texte[i] == x) // on a trouve
{
for(p=i;texte[p]!=0;p++)
texte[p]=texte[p+1];
}
}
}
amuse toi bien...! Pof |
La solution la plus bourine, c'est de relancer la fonction tant que le caractères "e" est trouvé.
Il y a surement un moyen de faire en sorte que cela soit plus optimisé, mais ca reste la solution de base. |
|
Imagine que tu as une tête de lecture qui avance sur ta chaine, et une tête d'écriture qui écrit ce que tu lis sauf les 'e'.
Bref, t'as besoin d'une seule chaine et d'un seul parcours. C'est optimal. void del_char(char* str, char c) //Enleve tous les c de str
{
int id_read, id_write;
id_read = 0;
id_write = 0;
while (str[id_read] != '\0')
{
if (str[id_read] != c)
{
str[id_write] = str[id_read];
id_write++;
}
id_read++;
}
str[id_write] = '\0';
} |
Par un copié collé je me suis créé un fichier excel contenant malheureusement des caractères spéciaux que je voudrais maintenanat virer.
Comment faire pour remplacer des "□" par rien ou par un espace ?? je prends la fonction remplacer et je rentre ce "□" par un CTRL-V mais cela ne marche pas . D'avance merci |
Résultats pour Supprimer un caractere dans une chaine
Résultats pour Supprimer un caractere dans une chaine
Résultats pour Supprimer un caractere dans une chaine
Résultats pour Supprimer un caractere dans une chaine