Alternative à la fonction itoa

Contenu du snippet

Ce petit code est une alternative à itoa qui à ma connaissance n'est pas présent dans tous les include des compilo

Source / Exemple :


#include <math.h>

#define _itoa(a,b,c) __itoa(a,b,c,32)

int __itoa(int num,char *result,int base,int nbrNum)
{
int j=0;
int i=0;
int k=0;
int l=0;
int temp;
char res[32];
char res2[nbrNum+1];
char cList[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
if(result==NULL || base>16 || base<2)return -1;
j=num;
i=31;
while(i>=0)
	{
	l=pow(base,i);
	temp=(int)j/l;
	res[k++]=cList[temp];
	j-=temp*l;
	i--;
	}
i=0;
j=31-(nbrNum-1);
for(k=j;k<32;k++)res2[i++]=res[k];

res2[nbrNum]='\0';
printf("res2=%s \n",res2);
memcpy(result,res2,sizeof(res2));
return 0;
}

Conclusion :


Ce code a été testé sous windows Me et seulement avec quelques valeurs .
Il existe deux fonctions : la première dont les param sont : le nombre(int),le pointeur vers une string(char *)et la base(int) .
La deuxièmre fonction qui est en faite la première avec un param de plus et qui est le nombre de caractères à garder dans la string .

ATTENTION : la string renvoyée doit contenir un char de plus que le nombre de char gardé car la fonction ajoute le NULL de la fin de la string

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.