Fonction qui génère un code en chaine

Résolu
salut,
je cherche à faire une fonction qui à partir d'un entier génère un code sur 5 chiiffre en chaine de caratère

char * create_id(int i, char *id) ;

exemple :

char id[5];
create(402,id) ---> "00402"

j'ai essayé tout ce que je sait sans avoir aucune solution, svp aidez moi j'en ai besoin
merci
Configuration: Windows Vista
Firefox 3.0.4

4 réponses

  1. Contributeur
    Ou tout simplement :
    #include <stdio.h>
    
    char *create_id(const int i, char *id) {
        snprintf(id,6,"%05d",i);
        return id;
    }
    
    int main(void){
        char id[6];
        create_id(402,id);
        puts(id);
    
        return 0;
    }
    
    0
    1. aussi,
      mon choix étant de resté générique quelque soit le langage n'aillant pas été explicitement donné.
      Bien que implicite par la déclaration de la fonction.
      0
    2. Contributeur
      @azureus33très implicite même. Je connais pas beaucoup de langages avec le char* ^^.
      0
    3. @fiddypourquoi faire simple quand t-on peut faire compliqué.
      c'est la logique de tous.
      En effet on simplifie toujours mais on ne complique que rarement et encore.
      Cela prouve que l'on recheche toujours compliqué quand t-on pouvais faire simple.

      Hum je suis fatiguer moi ... dodo go :)
      0
  2. merci pour les réponse,
    j'ai trouvé une réponse plus longue que les votre mais qui après une semaine devant le poste à programmer avec VS et à debiogger me satisfait plainement
    	char num[10] = {'0','1','2','3','4','5','6','7','8','9'};
    		for(int i = 0;i<9;i++){
    			id[0] = num[i];
    			for(int j = 0;j<9;j++){
    				id[1] = num[j];
    				for(int k = 0;k<9;k++){
    					id[2] = num[k];
    					for(int h = 0;h<9;h++){
    						id[3] = num[h];
    						for(int m = 0; m<9 ;m++){
    							id[4] = num[m];
    								goto end;
    						}
    					}
    				}
    			}
    		}
    end:
    

    je crois que la solution de azureus d'aller faire un n'est pas mal non plus aller Bon8 à tous et merci
    0
    1. Contributeur
      Oui, mais bon pourquoi recoder des fonctions qui font déjà le boulot à notre place. En plus elles sont souvent plus optimisés et plus fiables. De plus, si tu veux refaire quand même la fonction. Tu peux faire beaucoup plus simple.
      #include <stdio.h>
      
      char *create_id(int nb, char *id) {
          int i;
          for(i=4;i>=0;i--){
              id[i]=nb%10+'0';
              nb/=10;
          }
          id[5]='\0';
          return id;
      }
      
      int main(void){
          char id[6];
          create_id(402,id);
          puts(id);
      
          return 0;
      }
      

      Mais bon, snprintf suffit. Et sinon n'oublie pas de terminer une chaîne par un \0 sinon tu risques d'avoir des surprises.
      0
  3. saluts a tous j une personne sur forum qui a besoin aide pour son prog

    aller voir se lien svp

    [url]http://www.commentcamarche.net/forum/affich 10576093 souci de ligne dans mon c[/url]
    0
    1. decompose ton int en 5 variable int.
      unite, dizaine, centaine, millier, dizaine_millier ;
      exemple :   dizaine_millier =ton_int%10000;
                          ton_int=ton_int-dizaine_millier ;
                          millier=ton_int%1000 ;
                          ton_int=ton_int-millier ;
      etc...
      
      ensuite pour chaque variable traduit en char  
      exemple  : char Cuniter='0'+unité ;
      etc...
      
      tu met tout dans un tableau dans l'odre et c'est finit
      
      
      -1