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 :

Affichage de string


Sujet :

C

  1. #1
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut Affichage de string
    salut les amis
    je ne sais pas si c'est la fatigue mais je n'arrive meme plus a afficher une chaine correctement

    voici le ti bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    #include<stdio.h>
    #define NB_ELT 63
     
    int main(void)
    {
    	int i,j,k;
    	int total = 0;
    	char valeur[3];
    	unsigned char ALL[NB_ELT] = { 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0' };
     
    	for (i=0; i<NB_ELT; i++)
    	{
    		for (j=i; j<NB_ELT-1; j++)
    		{
    			for (k=j; k<NB_ELT-2; k++)
    			{
    				valeur[0] = ALL[i];
    				valeur[1] = ALL[j];
    				valeur[2] = ALL[k];
     
    				printf("%s\n",valeur);
    				total ++; // stocke le nombre de combinaisons totales
    			}
    		}
    	}
    }
    lorsque j affiche valeur je suis censé avoir mes 3 elements a chaque fois non ?

  2. #2
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Tu as oublié le caractère de fin de chaîne.....

  3. #3
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    effectivement

  4. #4
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Mais au lieu de s'embêter avec une chaîne de caractère, n'est-il pas plus simple de faire comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%c%c%c\n",ALL[i], ALL[j], ALL[k]);

  5. #5
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    Normalement oui mais en fait j'ai besoin de former une chaine avec ces valeurs pour la suite de mon programme (voir suite dans le Thread intitulé : Tableau : Combanaison possible ! )
    Merci pour ton aide

  6. #6
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    je relance le thread avec une autre question sur les string

    auriez vous un equivalent de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	for(i=0;i<16;i++)
    		sprintf(mot[i],"%02x",digest[i]);
    sachant que ce sprintf ne marche pas mais je ne vois pas comment exprimer l'idee autrement
    je souhaite avoir une chaine de caractere formé de chaque element du tableau digest au format "%02x"

  7. #7
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Je n'ai pas tout saisi....
    Qu'est ce qui ne marche pas avec sprintf ?
    Quelle est la déclaration de "mot" et de "digest" ?
    Que veux tu faire au juste ? Donne un exemple....

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Comme crocodilex, je ne vois pas de problème avec ce morceau de code posté plus haut, moyennant le fait que mot[i] fournisse l'adresse d'un tableau de char de taille suffisante pour accueillir la chaine générée.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  9. #9
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    En fait apparement le code marche (il suffisait de mettre '&' devant mot[i] ) cependant je ne comprend pas pourquoi je n'arrive pas a afficher toute la longueur du mot

    mes declarations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	unsigned char digest[16];
     
    	char *mot = (char*)malloc(128*sizeof(char));
    lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	for (i = 0; i < 16; i++)
    	printf ("%02x", digest[i]);
    je retrouve a l'ecran ceci : cee631121c2ec9232f3a2f028ad5c89b (c'est surtout la longueur qui m'interesse)

    et lorsque j'essaye de mettre ma valeur dans la variable mot ! je me retrouve avec ceci : eaa2c47ba3aef04a (une valeur beaucoup plus courte )

    pour afficher la valeur de la variable mot je fais un printf %s mais je ne pense pas que l'erreur vienne de la

    ps : en affectant les données dans la variable mot j'ai comme l'impression de reecrire par dessus ce qui a été mis avant

  10. #10
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    solution a ce probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	char *app;
    	char *mot;
    	app=malloc(sizeof(char));
    	mot=malloc(strlen(digest));
    	strcpy(mot,"");
    	for (i=0;i<16;i++){
    		sprintf(app,"%02x",digest[i]);
    		strcat(mot,app);
    	}
    il me reste juste a regler un ti probleme de segmentation fault

  11. #11
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    mot=malloc(strlen(digest));
     
    par
     
    mot=malloc(strlen(Pwd));


    pour votre aide !!!

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    rate !!!

    TOUJOURS utiliser le + 1 pour la place du caractere de fin de chaine....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mot=malloc(strlen(digest)+1);
     
    par
     
    mot=malloc(strlen(Pwd)+1);

  13. #13
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    effectivement....mais j'ai trouvé quand meme

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 07/10/2009, 12h15
  2. [BIRT] Affichage 'List<String>' dans un 'Table' de birt
    Par gdev7 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 29/04/2009, 16h55
  3. affichage des strings en gcc
    Par Linu6 dans le forum Linux
    Réponses: 25
    Dernier message: 24/08/2007, 11h02
  4. Affichage de String au lieu d'Integer Dans un DBCombo!
    Par soror dans le forum Bases de données
    Réponses: 5
    Dernier message: 17/07/2007, 12h37
  5. affichage de string dans JEditorPane
    Par hasnaouiwafa dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 27/04/2007, 18h28

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