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 :

Convertir tableau d'entiers en chaine de caracteres


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut Convertir tableau d'entiers en chaine de caracteres
    Bonjour,

    Je cherche un moyen de convertir un tableau de 10 entiers en une chaine de caractères donc un tableau de char. Il y a la fonction sprintf mais qui ne travaille que pour un entier. Le souci c'est que même en utilisant cela dans une boucle pour l'appliquer sur chaque entier du tableau, je suis bloquée. J'ai tenté des concaténation des résultats mais avec le fait de définir la taille à l'avance de la chaine de caractères, je n'arrive pas au résultat voulu . Une idée ? J'ai entendu parler de la fonction itoa mais elle n'est pas présente dans les librairies par défaut, et en plus il semble qu'elle fasse comme sprintf c'est-à-dire qu'elle ne travaille qu'avec un entier et pas un tableau d'entiers.

  2. #2
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    Plus de precisions ?

    Ton tableau d'entier c'est du style
    [12][60][5623][965][0001][8520][65534]

    et tu veux le convertir en:
    [1][2][6][0][5][6][2][3][.....]

    ou c'est dors et deja de l'ascii dans ton tableau ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut
    Alors mon tableau d'entiers contient tout simplement un 1 ou un 0 par case
    Par exemple : [1][0][1][1][0][1]1][0][0][1]
    Et je veux obtenir une chaine de caracteres : 1011011001

  4. #4
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Si ton tableau ne contient que des 1 ou des 0 tu peux faire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int i;
    char tc[11];
     
    int e[]={0,0,1,1,0,0,1,0,1,0} ;
     
    for(i=0; i<10; i++)
     {
        if(e[i]) tc[i]= '1';
        else tc[i]='0';
     }
    tc[10]=0;
     
    printf("La chaine est : %s", tc);

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut
    Effectivement c'est une solution auquelle je n'avais pas pensé ! Merci, ça marche bien ! Je me permets juste de faire ma difficile dans le sens où là ok ça marche avec 0 ou 1 mais si j'avais d'autres valeurs, il n'y a pas un moyen d'éviter des tests ?!

  6. #6
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Si la corespondance littérale de tes entiers est sur plusieurs caractères, il va tout d'abord falloir les convertir en chaine de caractére et faire ensuite une concaténation avec le précédent.

    si tes entier vont de 0 à 9 tu peux leur ajouter 48 ce qui donne le code ASCII du caractére

    for(i=0; i<10; i++) tc[i]= e[i]+48;

  7. #7
    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
    Dans ce cas, il vaut mieux écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i=0; i<10; i++) tc[i]= e[i]+'0';
    ce qui est plus indépendant du codage utilisé par les caractères

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut
    OK ! bah c'est cool l'astuce du +48 ! je prends note !
    Merci à tous !

    Bonne après-midi !

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 465
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 465
    Par défaut
    Citation Envoyé par marion5515 Voir le message
    OK ! bah c'est cool l'astuce du +48 !
    Suis les conseils de Diogène et écrit plutôt +'0'. Ça revient exactement au même et ça permet de dire au compilateur comme au programmeur ce que tu cherches réellement à faire. En plus, si jamais tu compiles ton programme sur un système exotique (non-ascii), ça passera tout seul car tu auras pris dès le départ les bonnes habitudes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tableau d'entier et chaine
    Par mick-67 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 11/05/2011, 11h09
  2. Réponses: 15
    Dernier message: 16/08/2007, 11h47
  3. Réponses: 11
    Dernier message: 08/06/2007, 20h19
  4. [VB]Convertir une chaine de caractere en entier
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/02/2006, 11h06
  5. convertir tableau d'entier en char[]
    Par nin47 dans le forum C
    Réponses: 20
    Dernier message: 12/10/2005, 20h03

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