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 :

int->char mais comment ?


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 5
    Par défaut int->char mais comment ?
    Bonjour,

    Je suis un newbie en c.

    J'ai en entrée (variable) en int et je voudrais mettre cette valeur dans une variable en char.

    je fais du calcul et j'autogenere un message.

    int valeur=2;
    int message="Le resultat du la procedure 5 est";

    Voici le genre de chose.

    Pas la peine de me dire d'utilise le printf("Le resultat du la procedure 5 est %d\n",valeur);

    Cela ne m'est pas utile. Je voudrais autogenerer le message.

    Merci de votre aide

    Christophe

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Bonjour,

    sprintf() ferait surement ton bonheur

  3. #3
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Tof_de_douai
    int valeur=2;
    int message="Le resultat du la procedure 5 est";
    Aucun sens... Une chaîne de caractères ne peut pas être affecté à un entier mais à un tableau de caractères ou un pointeur de caractères (avec la mémoire allouée bien sûr!).

    Je pense que ce que tu veux est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char buf[128];
    int valeur = 2;
    int res = f(valeur);
    sprintf(buf,"Le resultat de la procedure est %d",res);
    Jc

    [EDIT]Grillé... [/EDIT]

  4. #4
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par Tof_de_douai
    Bonjour,

    Je suis un newbie en c.

    J'ai en entrée (variable) en int et je voudrais mettre cette valeur dans une variable en char.

    je fais du calcul et j'autogenere un message.

    int valeur=2;
    int message="Le resultat du la procedure 5 est";
    Plutôt char * message = "Le resultat du la procedure 5 est";

    Mais... Non, car un pointeur vers char initialisé de la sorte pointe vers une zone mémoire qui souvent n'est accessible qu'en lecture seule, et donc la chaine n'est pas modifiable.

    Donc mettons dans la chaine dans un tableau :
    char message[] = "Le resultat du la procedure 5 est";
    Ici, la zone mémoire choisie par le compilateur pour stocker les données de message est accessible en lecture/écriture. Alas, c'est encore l'échec, le tableau initialisé de la sorte est certes bien modifiable, mais on ne peut pas agrandir ici la chaine, message étant automatqiuement dimensionné à la longueur de la chaine de caractères (+1 pour '\0') d'initialisation.

    Prévoyons donc un tableau en explicitant la taille maximale désirée et initialisons le avec le caractère terminateur de chaines '\0' (mis partout) tant qu'on y est. On aurait pu initialiser aussi avec "Le resultat du la procedure 5 est" mais cela n'a pas grand intérêt (car on va le réécrire après).

    #define NB 100
    char message[NB+1] = { '\0' };

    Citation Envoyé par Tof_de_douai

    Voici le genre de chose.

    Pas la peine de me dire d'utilise le printf("Le resultat du la procedure 5 est %d\n",valeur);

    Cela ne m'est pas utile. Je voudrais autogenerer le message.

    Merci de votre aide

    Christophe
    Hé bé, pas printf(), mais sprintf(). Cela marche pareil, sauf que la sortie n'est plus le flux de sortie standard mais un espace en mémoire assez grand pour recevoir toute la chaine formatée. Ainsi, avec le tableau message défini plus haut, cela donne :

    sprintf(message,"Le resultat du la procedure 5 est %d\n",valeur);

    Il faut par contre être bien sûr que l'espace mémoire destination est assez grand pour acueillir toutes les données de la chaine formatée.

    A+

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 5
    Par défaut [Resolu] int->char mais comment ?
    Il faut tout simplement utiliser sprintf

    voir la FAQ
    Comment convertir un nombre en chaîne de caractères ? [haut]

    auteur : Bob
    Pour convertir un nombre en chaîne de caractère, on utilise la fonction sprintf() (contenue dans stdio.h). Cette fonction fait partie de la norme ANSI-C, elle peut donc être utilisée sous n'importe quelle plateforme.

    Pour placer un nombre entier dans une chaîne de caractères, on procédera donc ainsi :
    #include <stdio.h>

    char buf[32];
    int n=10;

    sprintf(buf, "%d", n);


    sprintf() admet différents paramètres, comme
    %s pour une chaîne de caractère,
    %f pour un nombre réel,
    %u pour un nombre non signé,
    %x pour un nombre hexadécimal.

  6. #6
    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 Tof_de_douai
    J'ai en entrée (variable) en int et je voudrais mettre cette valeur dans une variable en char.
    sprintf ()
    je fais du calcul et j'autogenere un message.
    Ca veut dire quoi "j'autogénère". C'est le code qui crée le message, c'est pas toi...

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Aucun sens... Une chaîne de caractères ne peut pas être affecté à un entier
    Ca a du sens mais c'est déconseillé:
    Any pointer type may be converted to an integer type. Except as previously specified, the
    result is implementation-defined. If the result cannot be represented in the integer type,
    the behavior is undefined. The result need not be in the range of values of any integer
    type.
    (draft 9899 chapitre 6.3.2.3 point 6)

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. Réponses: 4
    Dernier message: 13/12/2005, 18h14
  3. [C++] Conversion de int en char* ou SetDlgItemText()
    Par lastcheper dans le forum MFC
    Réponses: 3
    Dernier message: 11/04/2005, 17h46
  4. [SQL] Convertir un champ INT en CHAR dans un SELECT ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/03/2005, 14h45
  5. HomeDB, oui mais comment ?
    Par Gregouz dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 27/10/2004, 15h27

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