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 :

comment convertir un char en char*?


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut comment convertir un char en char*?
    bonjour a tous!!
    je commence dans la programmation en c et g un petit probleme, je voudrai convertir un char en char*
    existe-il une fonction qui nous permet de faire ça ??
    merci d'avance !!

  2. #2
    Membre actif Avatar de amaury pouly
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 157
    Points : 224
    Points
    224
    Par défaut
    Explique plus précisemment ce que tu veux faire.
    Est-ce que tu veux faire quelque chose comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char c='a';
    char *str=fonction_magique(c);
    /* ici str="a" */
    ?

    Si oui, il y a deux façons.
    La première est adaptée si tu ne veux pas allouer de mémoire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /* traitement */
    char c=...;
    /* traitement */
    char str[2];
    str[0]=c;
    str[1]='\0';
    Attention à ne pas prendre l'adresse de str n'importe comment !

    La seconde façon alloue de la mémoire(et doit donc la libérer !):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    char *char2string(char c)
    {
       char *str=malloc(2*sizeof(char));
       if(str==NULL)
         return NULL;
       str[0]=c;
       str[1]='\0';
       return str;
    }

  3. #3
    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
    je commence dans la programmation en c et g un petit probleme, je voudrai convertir un char en char*
    La question n'a pas de sens : ou c'est un char ou c'est un char* (c'est à dire, probablement, un tableau de char). Les deux concepts sont radicalement différents.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 439
    Points : 37 030
    Points
    37 030
    Par défaut
    Si on se contente de lire la question la réponse pourrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char c='a';
    char *pc = &c;
    Pour pousser encore plus dans l'impertinence, nous pourrions dire soit une boite dans { char, long, int, ... } pour retourner un pointeur vers la boîte "il suffit" de créer un boite* pboite et de mettre l'adresse d'une boite dedans.

    Vous pourrez remarquer qu'en C, un "pointeur vers" une boîte peut s'étendre à un pointeur vers un tableau de boîtes.

    Lorsque la boîte est un char, nous pénétrons dans un domaine assez particulier définit par la convention : la fin d'un tableau de char est signalée par '0'.
    Ceci dit, rien de tel n'est définit pour les autres "boîtes": comment est signalée la fin d'un tableau d'entiers?

    Pour les débutants tout cela peut paraître "bizarre".
    Mais comme nous avons la chance de pratiquer le français, un language riche en exceptions, que l'on mémorise à force de renvois aux racines latines, grecques, autres... nous sommes peut être plus tolérants face à ce type d'irrégularités.
    - W

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    ...la fin d'un tableau de char est signalée par '0'....
    Heu ... non (mais je chipote un peu ).

    La fin d'une chaine de caractères est signalée par '0' (et en plus, c'est '\0'). Il est possible d'avoir des tableaux de char qui ne sont pas des chaines de caractères et donc qui ne sont pas terminés par 0.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 439
    Points : 37 030
    Points
    37 030
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Heu ... non (mais je chipote un peu ).

    La fin d'une chaine de caractères est signalée par '0' (et en plus, c'est '\0'). Il est possible d'avoir des tableaux de char qui ne sont pas des chaines de caractères et donc qui ne sont pas terminés par 0.
    Oops!
    Tu as tout à fait raison...
    J'ai du mal a décoincer de SQL et PHP: je dégaine des ''' un peu trop vite ;-(
    - W

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    merci pour vos reponses , mais en fait, dans mon programme g declaré une chaine de caracteres et un tableau de chaines de caracteres, voici un petit bout du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include<stdio.h>
    #include<string.h>
      char chaine[50];
    	char *tableau[50];
    	int i=0,j=0;
    	void main(){
    	gets(chaine);
    	  //traitement
    	  tableau[i]=chaine[j];
    	  //traitement
    	  }
    et a la compilation il m'affiche l'erreur :
    Cannot convert 'char' to 'char *' in function main()

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 921
    Points : 220 492
    Points
    220 492
    Billets dans le blog
    127
    Par défaut
    Bonjour,

    Les variables globales c'est le mal.
    gets() c'est le mal aussi... :p ( mieux vaut utiliser fgets(), mais on en reparlera après, au pire lire une documentation de la fonction )

    Je présume que ton erreur est à la ligne du :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tableau[i]=chaine[j];
    Et c'est normal.
    Ton tableau est un pointeur sur une chaine de caractères ( de taille 50 )
    Ta variable chaine est une chaine de caractères de taille 50.

    Ainsi donc :
    pour tableau[i] tu accède à un char*
    pour chaine[i] tu accède à un char
    La convertion entre les deux n'est pas trop possible ( à part les cas proposés par les autres membres )
    Il doit y avoir une problème de conception, et au pire je pense que ce que tu veux faire, c'est grace à tableau stocké plusieurs chaine de caractères du style de chaine.
    Pour ce faire il faudra allouer tableau ( avec un malloc )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tableau = malloc(10*sizeof(char));
    par exemple
    et après faire une copie de la globalité de la chaine dans le tableau ( avec strcpy() )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strcpy(tableau[0], chaine);
    par exemple.

    N'hésite pas à poser pleins de questions si tu ne comprends pas, ou alors à me reprendre si je me trompe totalement dans la tache que ton programme doit effectuer.

  9. #9
    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 : 68
    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 fatweb Voir le message
    bonjour a tous!!
    je commence dans la programmation en c et g un petit probleme, je voudrai convertir un char en char*
    existe-il une fonction qui nous permet de faire ça ??
    merci d'avance !!
    Cette question n'a aucun sens.

    http://emmanuel-delahaye.developpez....ge=Page5#LXXVI

Discussions similaires

  1. Comment convertir un int en char
    Par pierrot10 dans le forum Débuter
    Réponses: 3
    Dernier message: 23/07/2013, 20h33
  2. Comment convertir une string en char C++
    Par Contractofoued dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/06/2008, 16h19
  3. Réponses: 2
    Dernier message: 25/10/2006, 19h09
  4. comment convertir un string^ en char*?
    Par chrono23 dans le forum C++/CLI
    Réponses: 2
    Dernier message: 10/10/2006, 16h49
  5. [debutant] Comment convertir un string en char
    Par jbidou88 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 04/05/2006, 13h58

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