Jump to content

[Dúvida] Converter inteiros/strings


Recommended Posts

Posted

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.

Desaparecido.

Posted

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.

Desaparecido.

Posted

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.

Posted

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);

Posted

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...

Posted

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 😄

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);

Desaparecido.

Posted

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.

😄

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.

Posted

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

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

Desaparecido.

Posted

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 😄

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.