#  > Desenvolvimento >  > Linguagens de Programação >  >  Inverso do atoi(); em C

## SDM

alguem conhece uma funcao q converta int em char???

tipo:


```
char *str;
int a;
 
str=(char *)malloc(3);
a=100;
 
str=itoa(a);
```

 
eu sei q isso num funfa....foi soh pra explicar....sei q da pra usar o sprintf(); dai ficaria assim:


```
char *str;
int a;
 
str=(char *)malloc(3);
a=100;
 
sprintf(str,"%d",a);
```

 
assim ele ateh funciona....mas num sei....meu sexto-sintido nao gosta do sprintf.....alguem tem alguma sugestao????

----------


## a2gs

fala ai!

relax, nao esquenta a piruca e use o s[n]printf(). TODOS lugares q vi faziam isso (sem falar q com sprintf() vc pode mudar o numero de base (%h, %o, etc)).

Se continuar com a pulga tras da orelha, da uma olhada no q esse codigo pode te ajudar:


```
#include <stdio.h>
int main(){
	int a=12345;
	int resto = 0;
	printf("\n");
	for( ; a>0 ; ){
		resto = a % 10;
		a = (int) a / 10;
		printf("resto = [%d], a = [%d]\n", resto, a);
	}
	return 1;
}
```

 Basta colocar cada 'resto' em uma matriz de char's (de tras pra frente!), transformando 'resto' em caracter (somando '0' caracter).

Nao parei pra pensar se o clausa do for( ; ; ) esta 100% correta (mas acho q tah). Escrevi de 'cabeca quente' (nao to bravo nao! tipo... to respondendo isso sem meu gerente-filha-da-#uta ver  :Wink:  ).

Se alguem souber de outra saida, pelo mor de Deus avisa, pq isso eh uma busca pessoal minha tb!!!  :Wink: 

falow

----------


## xstefanox

itoa()...


Abraços!

----------


## a2gs

#man itoa
No manual entry for itoa

/usr/include # grep -r itoa *
/usr/include #

vc instalou alguma biblioteca a mais???
O unico lugar na minha vida q vi itoa() foi no Borland TurboC stdlib.h!! (q Deus o tenha!)

itoa() nao eh padrao ANSI, POSIX ou seja la o q for...

----------


## SDM

Nossa cara.....procurando no garimpar.com eu achei um troco assim tbm....mas o bixo me pedia trez argumentos:

char *itoa(int num,char *num,int regex);

eu num intendi q porra eh essa de regex

----------


## a2gs

itoa(3C) existe em C++ ... (e nunca usei, entre ela e o sprintf(), sou mais o sprintf().. eh mais velho q eu!!!)
por favor, me passa essa a url pra eu ver....
tem certeza q era pra sistemas unix???

achei milhares de itoa() na inet, mas nenhum definido como PADRAO da lib C (ANSI (ou, muito menos POSIX (especifico pra sistemas unix-like))): eram implementacoes proprias e/ou pra sistemas Windows (suportada pelo compilador).

O pessoal faz muitos documentos de funcoes do mesmo estilo de man's, mas nao sao oficiais (e normalmente nem sao pra unix!!! #oda... atrapalha mais do q ajuda).

(normalmente o 3. parametro desse tipo de funcao eh o tipo de conversao de base. Normalmente eh 10... sei la... 'regex' eh estranho, ainda mais sendo do tipo int!!)

----------


## 1c3m4n

eu jah usei o itoa mas sem o terceiro parametro em LINUX mesmo, agora num me pergunte como, jah faz mto tempo hhhehhehheeh  :Smile:  vou ver se acho o fonte aki e passo pra galera

----------


## Requiem of insanit

nesse site fala a respeito!!!

http://irc.essex.ac.uk/www.iota-six....ntf_sscanf.asp

tem a itoa() como já foi falado, ela funciona assim:

itoa(int num, char str&#91;], int base)

num é o numero a ser convertido em string, str é a string de saída e base é a base numérica
se for binario é dois, decimal é 10 e bla bla bla!!

fui!!!

----------


## SDM

Oi Requiem of insanit, agradeço pela contribuição, mas eu ja resolvi isso com 


```
char *ptr;
ptr = (char *) malloc(N); // N eh o tamanho da string
sprintf(ptr,"%d",666);
```

 
Desculpe eu nao ter informado que já tinha solucionado, 
Obrigado  :Smile:

----------


## Requiem of insanit

*td bem!!! agora queria sber como funciona esse sprintf, eu ja ouvi fala dele mas nunca usei
o que ele faz??? e como usa-lo??*

:?

----------


## SDM

http://www.cppreference.com/stdio/sprintf.html

----------


## Requiem of insanit

ah sim!!! entendi!!
seria um "stringprintf" essa funcao!!
ok!! valeu!! :lol:

----------

