• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JoBlack

[Dúvida] Converter inteiros/strings

14 mensagens neste tópico

Existem funções para converter inteiros em strings e vice-versa?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens a itoa():

char numero_s[20];
itoa(3257, &numero_s, 10); //converte o numero 3257 numa string, com base 10
itoa(3257, &numero_s, 16); //converte o numero 3257 numa string, com base 16

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes por aqui a syntax da função itoa  para eu perceber um pouco ?

qual seria o resultado de 3257 passado a string ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

está o link para a sintaxe da função no post anterior: itoa().

O resultado de itoa(3257, &numero_s, 10); seria "3257" na variável numero_s.

O resultado de itoa(3257, &numero_s, 16); seria "CB9" na variável numero_s, o que corresponde a 3257 em hexadecimal.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse ainda é mais fácil: atoi()

int i; char *s="3257";
i=atoi(s);

Atenção que só se podem utilizar valores de base 10. E se a string passada como parâmetro por por exemplo "-1034sdd", o resultado será i = -1034. Os caracteres a seguir ao número são ignorados. Se o 1º caracter não espaço não fou um algarismo ou +/-, a função retorna 0.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok, obrigado, já estive a experimentar mas obtenho um erro, alguma coisa está mal no código seguinte?

i=atoi(AUT.nr);
    ii=i+1;
    itoa (ii,buffer,10);
    AUT.nr=buffer;

Basicamente, o que pretendo é no campo AUT.nr da estrutura AUT converter em inteiro, somar-lhe 1 e voltar a converter em string para colocar novamente no mesmo campo. O erro aparece na linha  AUT.nr=buffer

As variáveis estão todas declaradas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esqueçam, já está resolvido....

strcpy(AUT.nr,buffer)

:-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pa começar, isso tá ao contrario... o atoi() converte strings pa inteiros e não vice-versa como foi dito e o itoa() é que converte inteiros para strings. mas o itoa() não é função standard, pelo que se estiveres a trabalhar em linux no gcc ou até mesmo no dev-cpp no windows (k suponho que seja igual visto usar uma port do gcc po windows) não vai funcionar, porque tanto quanto eu sei, o itoa, está no conio.h, biblioteca essa que é da borland e não é standard.

para converter inteiros para strings (ainda hoje um amigo me perguntou sobre isso), têm esta possiblidade:

int n = 5;

char buffer[10];

sprintf(buffer, "%i", n);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o strcpy() não te converte inteiros/strings (ou vice-versa), se dizes que tá resolvido, então a tua dúvida não era própriamente essa...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas o itoa() não é função standard, pelo que se estiveres a trabalhar em linux no gcc ou até mesmo no dev-cpp no windows (k suponho que seja igual visto usar uma port do gcc po windows) não vai funcionar, porque tanto quanto eu sei, o itoa, está no conio.h, biblioteca essa que é da borland e não é standard.

Ambas as funções estão na biblioteca stdlib.h, como é dito nos links que postei. Mais standard que a biblioteca standard torna-se complicado :D

para converter inteiros para strings (ainda hoje um amigo me perguntou sobre isso), têm esta possiblidade:

int n = 5;

char buffer[10];

sprintf(buffer, "%i", n);

A sprintf é menos eficiente que a itoa, porque tem que interpretar a string do 2º parâmetro.

o strcpy() não te converte inteiros/strings (ou vice-versa), se dizes que tá resolvido, então a tua dúvida não era própriamente essa...

Ele só substituiu a linha

AUT.nr=buffer;

por

strcpy(AUT.nr,buffer);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

então, só para aprenderes a ler aquilo que postas(não leves a mal, estou a dizer isto na brincadeira), vais ver que no link que postaste do itoa(), encontras o seguinte:

Portability.

  Not defined in ANSI-C. Supported by some compilers.

:D

quanto ao strcpy(), não tinha reparado, porque apenas liguei ao assunto do topico e não ao codigo todo e ao que ele tinha feito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Oraaaa... eu não disse que pertencia à especificação ANSI-C, disse que pertencia à biblioteca standard do C -> stdlib.h :D

NOTA é só para confirmar que o gcc do cygwin traz a biblioteca stdlib.h

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas eu tava a referir-me a essa, apesar de n a ter especificado, mas pensei que tivessem percebido o que quis dizer quando falei em standard, que me estava a referir ao ansi-c... mas não ha crise, chega de off-topics :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora