Jump to content

Pedido de ajuda com a função atoll()


msmsms
 Share

Recommended Posts

estou a tentar compilar este exemplo que encontrei pois preciso de utilizar a função atoll() num trabalho para representar um numero inteiro de 12 digitos e a função atoi() apenas pode representar até 9 digitos

no entanto o meu compilar dá erro para atoll() mas não dá para atoi() ou para atol()

alguem me consegue explicar o que tenho de fazer para que este consiga reconhecer esta função?

se alguém conhecer uma função alternativa à função atoll() para converter uma string num long long int

também fico grato pois o livro que tenho só fala da função atoi() para converter strings em inteiros no entanto esta função não é funcional para números com uma quantidade de dígitos decente

eu uso o winXP 32 bits também não sei se a atol() apenas com um <l> so consegue 9 digitos tal como a atoi() por causa disso, pelo que acho que tenho mesmo de seguir este exemplo que encontrei com a função atoll() com dois <l> que deverá devolver um inteiro com capacidade acima de 9 digitos.

eu estou a usar como IDE o visual c++

/* atoll example */
#include <stdio.h>	  /* printf, fgets */
#include <stdlib.h>	 /* atoll */
int main ()
{
 long long int lli;
 char buffer[256];
 printf ("Enter a long number: ");
 fgets (buffer, 256, stdin);
 lli = atoll(buffer);
 printf ("The value entered is %lld. Its double is %lld.\n",lli,lli*2);
 return 0;
}
Link to comment
Share on other sites

No meu compilador, esse codigo corre perfeitamente. Qual e' o erro que o visual c++ da' ?

o erro tal como indiquei deve-se à função atoll() e como preciso dela para conseguir a solução de um numero long long

não a posso desactivar a menos que exista uma alternativa à atoll() que não seja tão reles como atoi() ou atol()

error C3861: 'atoll': identifier not found

uma vez que dizes que a função atoll() corre no teu computador

podes partilhar comigo o teu ficheiro stdlib.h ?

Link to comment
Share on other sites

eu ja tinha visto esse esboço, isso não resulta

quando se entra no programa com mais de 9 digitos dá-se o overflow e no fim não obtenho o inteiro com pelo menos 12 digitos

a ultima experiência que é feita nesse código e que eu queria que de-se certo dá logo barraca entrando sempre em overflow

// Another example of the _atoi64 function
// with an overflow condition occurring.
str = "3336402735171707160320";
value = _atoi64( str );
printf( "Function: _atoi64( \"%s\" ) = %d\n", str, value );
if (errno == ERANGE)
{
   printf("Overflow condition occurred.\n");
}

será que a função atoll() não corre no meu computador por causa de ser windows 32bits ou será porque não tenho uma versão mais recente de compilação em c++?

Edited by msmsms
Link to comment
Share on other sites

vou assumir que estás a aprender e não simplesmente a gozar com o pessoal do fórum, porque olha bem para os teus post :

... no fim não obtenho o inteiro com pelo menos 12 digitos ...

   str = "3336402735171707160320";

consegues contar quantos dígitos tem a tua string ???

se sabes que tens problemas sobre o valor ser demasiado grande, deverias saber o porque desses problemas.

lê este artigo da wikipedia, pensa no que andas a fazer tanto em código como as respostas que apresentas aqui no fórum :

http://en.wikipedia.org/wiki/Integer_(computer_science)

IRC : sim, é algo que ainda existe >> #p@p
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
 Share

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