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 :

Fonction qui modifie une chaine de caractère


Sujet :

C

  1. #1
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut Fonction qui modifie une chaine de caractère
    Bonjour,
    Je voudrais écrire une fonction qui prend en paramètre une chaîne de caractère et la modifie.
    ça doit avoir l'air comme ça

    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
    #include <stdio.h>
    #include <string.h>
     
    void modif(char ** ch)
    {
     
     
    }
     
    int main (void)
    {
     char ** chaine;
     printf("Avant modif %s",chaine);
     modif();
     printf("Après modif %s",chaine); 
     
    }
    Pourriez vous me guider ?
    Merci

  2. #2
    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
    Bonjour,

    Donc quelques remarques:
    Pas
    mais
    Ensuite, il reste à faire l'allocation dynamique avec malloc et ne pas oublier de libérer la mémoire une fois que tu ne te sers plus de ton tableau dynamque.

    De ce fait le prototype de la fonction devient:
    Dans ton code, t'as omis de passer en paramètre ta chaine de caractères:
    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
    int main (void)
    {
         // Allocation dynamique
         // A faire...
    
         // Initilialisation de ta chaine
         // A faire...
    
         printf("Avant modif %s\n",chaine);
         modif(chaine);
         printf("Après modif %s\n",chaine); // Pour plus de lisibilité pour lire le résultat
    
         // Libération de la mémoire
         // A faire...
    }

  3. #3
    Membre habitué Avatar de archer
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    338
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 338
    Points : 180
    Points
    180
    Par défaut
    Apparemment il ne me reste rien à ajouter sauf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chaine=(char*)malloc(longueur_chaine) ;//avec longueur_chaine une variable entière ou valeur fixe
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    free(chaine);//libération de la mémoire
    au cas ou tu ne sais pas comment faire l’allocation dynamique
    BN : malloc se trouve dans malloc.h

  4. #4
    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 : 47
    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
    Citation Envoyé par archer Voir le message
    Apparemment il ne me reste rien à ajouter sauf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chaine=(char*)malloc(longueur_chaine) ;//avec longueur_chaine une variable entière ou valeur fixe
    au cas ou tu ne sais pas comment faire l’allocation dynamique
    Pas besoin de cast sauf si tu veux compiler avec un compilateur C++ éventuellement donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = malloc (longueur_chaine);
    Citation Envoyé par archer Voir le message
    BN : malloc se trouve dans malloc.h
    Bin tu inclus directement:
    Comme ca t'es tranquille

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par archer Voir le message
    Apparemment il ne me reste rien à ajouter sauf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chaine=(char*)malloc(longueur_chaine) ;//avec longueur_chaine une variable entière ou valeur fixe
    au cas ou tu ne sais pas comment faire l’allocation dynamique
    BN : malloc se trouve dans malloc.h
    - Le cast (char *) est inutile devant le malloc
    - Le prototype de malloc est en standard dans stdlib.h

  6. #6
    Membre habitué Avatar de archer
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    338
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 338
    Points : 180
    Points
    180
    Par défaut
    à vrai dire je ne savais pas, car la première fois où j’ai utilisé l’allocation dynamique c’était avec les listes chaînées c’est pour cette raison que j’ai garder cette structure mais dans ce cas comment on peut allouer un tableau à deux dimensions sans utiliser (**char)

  7. #7
    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 : 47
    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
    Citation Envoyé par archer Voir le message
    à vrai dire je ne savais pas, car la première fois où j’ai utilisé l’allocation dynamique c’était avec les listes chaînées c’est pour cette raison que j’ai garder cette structure mais dans ce cas comment on peut allouer un tableau à deux dimensions sans utiliser (**char)
    Réponse dans la FAQ: http://c.developpez.com/faq/?page=ta...bleau_2D_alloc

  8. #8
    Membre habitué Avatar de archer
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    338
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 338
    Points : 180
    Points
    180
    Par défaut
    donc ça se fait de la même façon à part l’entête
    merci

Discussions similaires

  1. Réponses: 23
    Dernier message: 13/11/2006, 03h33
  2. Modifier une chaine de caractères lue dans une DB
    Par shinryu69 dans le forum Langage
    Réponses: 4
    Dernier message: 31/10/2006, 13h40
  3. Modifier une chaine de caractères ?
    Par Arkadius dans le forum Oracle
    Réponses: 2
    Dernier message: 13/04/2006, 16h21
  4. Réponses: 15
    Dernier message: 26/03/2006, 12h10
  5. Réponses: 5
    Dernier message: 18/10/2005, 21h53

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