Fonction qui génère un code en chaine

Résolu/Fermé
Utilisateur anonyme - 18 janv. 2009 à 23:20
 didier - 19 janv. 2009 à 00:33
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
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
18 janv. 2009 à 23:41
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
azureus33 Messages postés 49 Date d'inscription vendredi 16 janvier 2009 Statut Membre Dernière intervention 7 février 2010 7
18 janv. 2009 à 23:44
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > azureus33 Messages postés 49 Date d'inscription vendredi 16 janvier 2009 Statut Membre Dernière intervention 7 février 2010
18 janv. 2009 à 23:47
très implicite même. Je connais pas beaucoup de langages avec le char* ^^.
0
azureus33 Messages postés 49 Date d'inscription vendredi 16 janvier 2009 Statut Membre Dernière intervention 7 février 2010 7 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
18 janv. 2009 à 23:56
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
Utilisateur anonyme
19 janv. 2009 à 00:18
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
19 janv. 2009 à 00:30
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
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
azureus33 Messages postés 49 Date d'inscription vendredi 16 janvier 2009 Statut Membre Dernière intervention 7 février 2010 7
18 janv. 2009 à 23:33
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