Fonction qui génère un code en chaine

Résolu
velocity -  
 didier -
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. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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. azureus33 Messages postés 51 Statut Membre 7
       
      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
      1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > azureus33 Messages postés 51 Statut Membre
         
        très implicite même. Je connais pas beaucoup de langages avec le char* ^^.
        0
      2. azureus33 Messages postés 51 Statut Membre 7 > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
         
        pourquoi 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. velocity
     
    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. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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. didier
     
    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
  4. azureus33 Messages postés 51 Statut Membre 7
     
    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