IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Recherche de caractère


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut Recherche de caractère
    Bonjour,

    Voilà je voudrais savoir comment faire pour chercher un caractère dans une chaine et le suprimer.

    merci d'avance

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Une boucle où tu recopies chaque caractères, sauf celui que tu veux pas, sur une nouvelle zone mémoire.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    C pas si simple
    Reexplique stp.

  4. #4
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Voilà je voudrais savoir comment faire pour chercher un caractère dans une chaine et le suprimer.
    Comme cela, j'utiliserais d'abord la fonction strtok pour découper la chaine en deux parties dès que je rencontre ce fameux caractère à supprimer.
    Celui ci ne sera pas présent dans aucune des deux chaines!
    Ensuite, j'effectuerais une concaténation à l'aide de sprintf ou strcat avec ces deux chaines séparées par ton délimitteur (le caractère que tu désires supprimer)


  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Oui mais comment savoir la position du caractère dans la chaine

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Clément76
    Voilà je voudrais savoir comment faire pour chercher un caractère dans une chaine et le suprimer.
    Pour trouver sa place : strchr() ou strrchr(). Ensuite, que veux tu dire par supprimmer ? Si il faut décaler les caractères qui sont après, il faut utiliser memmove().

    Renseigne toi sur ces fonctions (http://man.developpez.com), puis écrit le code. Postes le si tu as un problème.
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Attendais je vais etre plus clair,

    voilà par exemple j'ai une chaine qui est egale a "abcdef".
    dans cette chaine je veux savoir si il y a un "a".
    si il y en a un je le supprime.
    donc apres j'aurais chaine = "bcdef"
    voilà c tous ce que je veux faire

    merci pour votre aide

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Clément76
    voilà par exemple j'ai une chaine qui est egale a "abcdef".
    dans cette chaine je veux savoir si il y a un "a".
    si il y en a un je le supprime.
    donc apres j'aurais chaine = "bcdef"
    voilà c tous ce que je veux faire
    Tu parles du premier 'a', de tous les 'a', du dernier, du nième ? Il n'y en a qu'un ? On fait quoi si il n'y en a pas ?

    Alors je t'ai donné la méthode en kit. A toi de jouer. On ne fourni pas de code.
    Pas de Wi-Fi à la maison : CPL

  9. #9
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    C'est http://man.developpez.com

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par gege2061
    Ouiiiin, ça m'apprendra à le faire de tête...

    Je corrige, merci.
    Pas de Wi-Fi à la maison : CPL

  11. #11
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    Février 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Février 2006
    Messages : 363
    Points : 353
    Points
    353
    Par défaut
    Ca doit etre ca que tu veux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    #include <stdio.h>
    #include <string.h>
     
    void supprimer_caractere(char *src,char* dst,char caractere)
    {
        int i,j,longueur_src;
     
        longueur_src=strlen(src);
     
        j=0;
        for(i=0;i<longueur_src;i++)
        {
            if(src[i]!=caractere)
            {
                dst[j]=src[i];
                j++;
            }
        }
    }
    Si ta chaine src c'est "tototo" et que caractere c'est 'o',
    dst sera "ttt"

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par drcd
    Ca doit etre ca que tu veux:
    NON. C'est au questionneur de chercher et de poster sa solution. Bien sûr que tu sais le faire, heureusement...
    Pas de Wi-Fi à la maison : CPL

  13. #13
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    Février 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Février 2006
    Messages : 363
    Points : 353
    Points
    353
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    NON. C'est au questionneur de chercher et de poster sa solution. Bien sûr que tu sais le faire, heureusement...
    lol tu es son prof ou quoi?
    Bon desole je recommencerai plus .
    Mais bon j'ai eus un moment de nostalgie quand j'ai ete confronté à ce pb et que
    j'avais demandé a mon pere de me le faire lol.

  14. #14
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut
    est ce que dans ce genre de problèmes on 'est obliger de relouer de la mémoire?ou plutôt quand est ce que 'est obliger de faire attention a ce genre de chose?

  15. #15
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    Je ne comprends pas ta question. Il faut tout le temps faire attention à la mémoire, surtout en C où c'est le programmeur qui gère pratiquement tout.

    Nas'

  16. #16
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par drcd
    lol tu es son prof ou quoi?
    En quelque sorte, oui. Ce site et l'ensemble des bénévoles qui l'animent ont pour vocation d'aider les questionneurs du mieux possible. Nous considérons que faire réflechir le questionneur sur son problème et le guider vers la solution est plus efficace que de filer du code tout fait.

    "Donne un poisson à un homme, il mangera une journée
    Apprend lui à pêcher, il mangera toute sa vie"

    -- Sagesse chinoise.
    Pas de Wi-Fi à la maison : CPL

  17. #17
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    est ce que dans ce genre de problèmes on 'est obliger de relouer de la mémoire?ou plutôt quand est ce que 'est obliger de faire attention a ce genre de chose?
    Dans ce cas là, je dirais qu'on a pas besoin de rallouer de la mémoire (avec l'utilisation de la fonction realloc) puisque au pire des cas on ne trouve pas le caractère à supprimer, donc si la taille du tableau de char a été correctement alloué au début, il n'y a pas de soucis!
    Dans le cas où, l'on trouve des caractères à supprimer,on n'utilisera pas l'ensemble de la mémoire allouée pour la chaine initiale. Donc pas de soucis de débordement.

    Il faut tout le temps garder à l'esprit la manière dont on utilise la mémoire et il peut y avoir besoin d'utiliser realloc lorsque la taille prévu par allocation dynamique est plus petite que ce qu'on désire sauver par la suite.

  18. #18
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut
    je me demande si je veux savoir comment changer la taille allouer a un pointeur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    int *et=malloc(sizeof(int)*2);
    et[0]=1;
    et[1]=2;
    *et=malloc(sizeof(int)*3);
    et[2]=3;
    free(et);
    return 0;
    }
    ma question est : que ce qui se passe dans ce que j'ai fait;

  19. #19
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par lastrecrue
    je me demande si je veux savoir comment changer la taille allouer a un pointeur?
    Cette question n'a aucun sens. Peux tu la reformuler ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    int *et=malloc(sizeof(int)*2);
    et[0]=1;
    et[1]=2;
    *et=malloc(sizeof(int)*3);
    et[2]=3;
    free(et);
    return 0;
    }
    ma question est : que ce qui se passe dans ce que j'ai fait;
    • Le bloc alloué en premier n'est jamais libéré.
    • Les données en [0] et [1] du 2ème bloc ont une valeur indéterminée.
    • Le programme a un comportement indéfini, car il ne retourne rien de défini au
    système (main() retourne int, tu devrais le savoir depuis le temps, non ?).

    Remarque : <conio.h> (non standard) ne sert à rien ici.
    Pas de Wi-Fi à la maison : CPL

  20. #20
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Cette question n'a aucun sens. Peux tu la reformuler ?
    C'est très clair pourtant:
    Citation Envoyé par lastrecrue
    je me demande si je veux savoir comment changer la taille allouer a un pointeur?
    Il n'est pas encore certain de vouloir la réponse à sa question !
    Sinon, lastrecrue, regarde du côté de realloc(), mais attention, lis bien la doc et parcourt ce forum, car son utilisation n'est pas triviale.

Discussions similaires

  1. Recherche de caractère
    Par reggae dans le forum C++
    Réponses: 5
    Dernier message: 03/01/2006, 12h35
  2. Recherche de caractères spéciaux
    Par sberube dans le forum Langage
    Réponses: 1
    Dernier message: 18/11/2005, 20h41
  3. [FPDF] Recherche chaine caractères dans fichier pdf
    Par licorne dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/10/2005, 11h55
  4. recherche de caractères non_lettres dans chaine
    Par niconoe dans le forum Requêtes
    Réponses: 4
    Dernier message: 12/09/2005, 08h54
  5. []recherche chaine caractère partielle
    Par cd090580 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/09/2005, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo