Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Supprimer un caractere dans une chaine

Pof, le lundi 21 novembre 2005 à 10:43:47
Bonjour,
je programme en C++ et sans l'aide de fonction particuliere!
j'ai une chaine de caractere et je demande recherche un caractere a supprimer. l'acquisition de la chaine est OK, la recherche du caractere est OK, mais je ne sais pas comment supprimer ce caractere!
ex : chaine1 = 'bonjour';
recherche de 'j';
suppression de 'j';
chaine1 = 'bonour';

si vous pouvez m'aider, MERCI!!!!!!
Pof
Répondre à Pof  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Luffy =), le lundi 21 novembre 2005 à 11:53:15
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
Répondre à Luffy =)

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pof, le lundi 21 novembre 2005 à 12:03:35
bah en fait cet un exo de prog que j'ai a faire et la consigne est de tout faire sans aucune librairie particuliere.
j avais pensé à un truc comme :
if (chaine1modifiee[i] == caractere_a_supp)
{ chaine1modifiee[i] = chaine1[i+1]; }

avec chaine1 = 'bonjour';
si je veux supp le 'j'
chaine1modifiee[4] = chaine[5]
mais comment faire pour le reste de la chaine?
Répondre à Pof

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Luffy =), le lundi 21 novembre 2005 à 12:06:25
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
Répondre à Luffy =)

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
GallyNet, le lundi 21 novembre 2005 à 13:48:20
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++;
}
Répondre à GallyNet

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ahmed, le mardi 6 février 2007 à 12:44:20
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
Répondre à ahmed

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pof, le mardi 6 février 2007 à 13:47:24
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
Répondre à Pof

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
GallyNet, le mardi 6 février 2007 à 13:48:50
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.
Répondre à GallyNet

8


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Micky, le jeudi 16 août 2007 à 14:47:50
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';
}
Répondre à Micky

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 laissepiC, le mercredi 9 janvier 2008 à 09:26:45
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épondre à laissepiC

Résultats pour Supprimer un caractere dans une chaine

Chaine en C (Résolu) Bonjour, j'ai un petit soucis en C.. J'aimerais additionner les termes de trois chaines de caractères : chaine1[7]={'a','b','c','d','e','f'};... www.commentcamarche.net/forum/affich-5556422-chaine-en-c
Belkin Wireless Cable/DSL Router Fréquence:2.4GHz,Algorithme de cryptage:128-bit WEP,64-bit WEP,Firewall,NAT support,Caractéristiques:NAT support,Portes LAN:4,Largeur:472561.0 cm,Profondeur:472561.0 cm,Hauteur:472561.0 cm,Poids:84389.0 kg,Profondeur:472561.0... www.commentcamarche.net/guide-achat/belkin-wireless-cable-dsl-router-186048-fiche-technique
[SHELL] regexp pour exprimer -N (Résolu) Bonjour, Je suis en train de faire un sed, et je cherche comment faire pour dire par exemple que je cherche à supprimer la chaine "-N"... J'arrive pas a faire en sorte qu'il prenne le tiret...une regexp qui fasse ca je veux dire... Si besoin... www.commentcamarche.net/forum/affich-3407637-shell-regexp-pour-exprimer-n

Résultats pour Supprimer un caractere dans une chaine

Supprimer un fichier contenant des caractères spéciauxSi le fichier que vous souhaitez supprimer commence par un caractère "moins" (-), la commande rm risque de prendre la suite comme une option de la ligne de commande. Pour y remédier, une première solution consiste à faire précéder le nom du... www.commentcamarche.net/faq/sujet-7057-supprimer-un-fichier-contenant-des-caracteres-speciaux
Liste simplement chaînéeLISTES SIMPLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes chaînées A. Initialisation B. Insertion d'un élément dans la liste 1. Insertion... www.commentcamarche.net/faq/sujet-7444-liste-simplement-chainee
Liste doublement chaînéeLISTES DOUBLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes doublement chaînées A. Initialisation B. Insertion d'un élément dans la... www.commentcamarche.net/faq/sujet-7636-liste-doublement-chainee

Résultats pour Supprimer un caractere dans une chaine

Diminuer le montant de ma facture de tps (Résolu)Bonjour Je voudrai savoir si il serait possible de diminuer le montant de mon abonement tps integral(33.5o€) en reduisant le nombre de chaines Par exemple supprimer certaines chaines etrangeres ou d'autres chaines loisir qui ne m'interesse... www.commentcamarche.net/forum/affich-1524780-diminuer-le-montant-de-ma-facture-de-tps
[VBA Excel] Supprimer caractères dans textbox (Résolu)Bonjour à tous, Je cherhce une fonction simple qui me permetterait de retirer des caractères d'une textbox, concrètement je voudrais qu'au moment de valider (en cliquant sur un bouttont de validation) certains caractères soient supprimés.... www.commentcamarche.net/forum/affich-3405940-vba-excel-supprimer-caracteres-dans-textbox
[PERL] Supprimer caractère vide (Résolu)Bonjour, Est ce que quelqu'un sait comment supprimer des cases vides dans un tableau en perl? J'ai supprimé dans mon tableau les \n (=~ s/\n//g;), les espaces (=~ s/\s+//g;), les tabulations (s/^[ \t]*//;s/[ \t]*$// ). Mais j'ai... www.commentcamarche.net/forum/affich-7508833-perl-supprimer-caractere-vide

Résultats pour Supprimer un caractere dans une chaine

Les chaînes de caractères en C++Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une... www.commentcamarche.net/contents/cpp/cppstring.php3
Langage C - Les chaînes de caractèresQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne... www.commentcamarche.net/contents/c/cstring.php3
Systèmes d'exploitation - DOS - AstucesAvoir accès au lecteur de CD-ROM Le lecteur de CD-ROM se déclare dans les fichiers config.sys et autoexec.bat. Dans le fichier config.sys il faut déclarer le gestionnaire de périphérique pour votre lecteur CD-ROM (bien qu'il soit détecté... www.commentcamarche.net/contents/dos/dosast.php3