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 averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    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 éprouvé Avatar de amaury pouly
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 157
    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 confirmé
    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
    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
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 725
    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 725
    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
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  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 : 62
    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
    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.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 725
    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 725
    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
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    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
    27 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 114
    Billets dans le blog
    147
    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.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Expert éminent
    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
    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, 19h33
  2. Comment convertir une string en char C++
    Par Contractofoued dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/06/2008, 15h19
  3. Réponses: 2
    Dernier message: 25/10/2006, 18h09
  4. comment convertir un string^ en char*?
    Par chrono23 dans le forum C++/CLI
    Réponses: 2
    Dernier message: 10/10/2006, 15h49
  5. [debutant] Comment convertir un string en char
    Par jbidou88 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 04/05/2006, 12h58

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