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 du Club
    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
    Points : 57
    Points
    57
    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 habitué
    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
    Points : 169
    Points
    169
    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 du Club
    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
    Points : 57
    Points
    57
    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 confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    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 du Club
    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
    Points : 57
    Points
    57
    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 confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    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 é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
    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 du Club
    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
    Points : 57
    Points
    57
    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
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 400
    Points : 23 777
    Points
    23 777
    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