Jump to content

[Dúvida] Converter inteiros/strings


JoBlack

Recommended Posts

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.

Link to comment
Share on other 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.

Link to comment
Share on other 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);

Link to comment
Share on other 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 😄

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.

Link to comment
Share on other 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.

😄

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.

Link to comment
Share on other sites

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.