msmsms Posted August 3, 2014 at 07:40 PM Report Share #563939 Posted August 3, 2014 at 07:40 PM 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 More sharing options...
mogers Posted August 3, 2014 at 09:31 PM Report Share #563946 Posted August 3, 2014 at 09:31 PM No meu compilador, esse codigo corre perfeitamente. Qual e' o erro que o visual c++ da' ? "What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 3, 2014 at 10:54 PM Report Share #563955 Posted August 3, 2014 at 10:54 PM http://msdn.microsoft.com/en-us/library/czcad93k%28v=VS.100%29.aspx IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
msmsms Posted August 3, 2014 at 11:52 PM Author Report Share #563957 Posted August 3, 2014 at 11:52 PM 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 More sharing options...
msmsms Posted August 4, 2014 at 12:22 AM Author Report Share #563958 Posted August 4, 2014 at 12:22 AM (edited) http://msdn.microsoft.com/en-us/library/czcad93k%28v=VS.100%29.aspx 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 August 4, 2014 at 12:28 AM by msmsms Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 4, 2014 at 01:45 AM Report Share #563960 Posted August 4, 2014 at 01:45 AM 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 Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now