Problemas com itoa() [C]

LaNgSuYaR

Power Member
Boas! eu tenho um trabalho em C para terminar até ao final do semestre. Até aqui, tudo estava a correr bem, mas por estar a usar matrizes como ambiente para o utilizador, surgiu-me um pequeno problema.

Eu estou a tentar converter um int para string, usando a função itoa(), mas estou a ter bastantes problemas com ela na medida em que está-me sempre a dar "Bus error". Já li por aí que a função itoa() é especialmente delicada em certas situações, mas precisava msmo disso porque quero imprimir inteiros numa matriz de char's e não arranjo maneira. Eu acho que o problema principal se encontra no uso de apontadores, mas para este caso é mesmo o que necessito. A função que estava a usar é a seguinte:

void strreverse(char* begin, char* end) {

char aux;

while(end>begin)

aux=*end, *end--=*begin, *begin++=aux;

}

void itoa(int value, char* str, int base) {

static char num[] = "0123456789abcdefghijklmnopqrstuvwxyz";

char* wstr=str;

int sign;


// Validate base

if (base<2 || base>35){ *wstr='\0'; return; }


// Take care of sign

if ((sign=value) < 0) value = -value;


// Conversion. Number is reversed.

do {wstr++; *wstr = num[value%base];} while(value/=base);

if(sign<0) {wstr++; *wstr='-';}

*wstr='\0';


// Reverse string

strreverse(str,wstr-1);

}

Ora, eu já consegui perceber como a função funciona, não entendo é o erro que me aparece sempre. só se estiver a declarar mal o apontador na main()!

Tnkx in advance!
Cumps!
 
Warrior tnkx! já resolvi o prob.... já tinha lido qualquer coisa acerca do sprintf, mas deve ter-me passado a noção de 'buffer'!! Já me permitiu adiantar e quanto o trabalho! :D

De qualquer das formas, fiquei com a curiosidade acerca do funcionamento da função itoa(), e que aparte a necessidade, fica o pedido de alguma informação concreta sobre a função!

Abraço!
 
vou aproveitar este topico :D

itoa é para converter string para inteiro ( int )
e para converter string para 'float' ??

precisava da resposta com alguma urgencia :)

desde de ja thnks ;)
 
Última edição:
itoa é para converter um inteiro em string, não o contrário. Para converter uma string em float tens o "atof()".

ok..thnks ;)

itoa é para converter um inteiro em string... entao _itoa é para converter uma string em inteiro


e para converter um float em string como é ?
 
float para string também podes usar o sprintf.

Basicamente:
Qualquer coisa para string: sprintf.
String para inteiro: atoi()
String para float: atof()
 
Back
Topo