_Isis_ 202 Denunciar post Postado Dezembro 26, 2008 Coisa rápida.... #include <stdlib.h> #include <stdio.h> int main() { char S[255]; scanf("%s",&S); printf("%d\n",atoi(S)); // str -> int printf("%l\n",atol(S)); // str -> long printf("%f\n",atof(S)); // str -> float return 0; } #include <stdlib.h> #include <stdio.h> int main() { char S[255]; scanf("%s",&S); printf("%f\n",strtof(S,NULL)); // str -> float printf("%lf\n",strtod(S,NULL)); // str -> double printf("%L\n",strtold(S,NULL)); // str -> long double return 0; } O problema é que atoi, atol e atof não informam sobre overflow, ao contrário de strtof, strtod e strtold. #include <stdlib.h> #include <stdio.h> #include <errno.h> int main() { char S[255]; scanf("%s",&S); printf("%d\n",atof(S)); scanf("%s",&S); float F = strtof(S,NULL); if (errno == ERANGE) { printf("%m\n"); return 1; } return 0; } Para converter floats para strings algumas das funções que podem ser utilizadas são: gcvt, fcvt e ecvt, embora estejam marcadas como obsoletas e pertençam ao POSIX.1-2001. É recomendado usar sprintf. #include <stdlib.h> #include <stdio.h> int main() { char int_[255], float_[255], double_[255]; int D; float F; double DD; scanf("%d %f %lf",&D, &F, &DD); sprintf(int_,"%d",D); sprintf(float_,"%f",F); sprintf(double_,"%lf",DD); printf("%s\n%s\n%s\n",int_, float_, double_); return 0; } Também podemos utilizar a função strtol. Mas além de converter strings para longs, podemos converter bases. #include <stdlib.h> #include <stdio.h> int main() { char *S[6]; S[0] = "10"; S[1] = "110101"; S[2] = "10101010"; S[3] = "111111"; S[4] = "100101"; S[5] = "101"; for(int i=0;i<6;i++) printf("%s = %d\n",S[i],(int)strtol(S[i],NULL,2)); return 0; } #include <stdlib.h> #include <stdio.h> int main() { char S[]= "fad12"; char A[]= "6161662"; char B[]= "923820ahsgd"; printf("%s = %d\n",S,(int)strtol(S,NULL,16)); printf("%s = %d\n",A,(int)strtol(A,NULL,7)); printf("%s = %d\n",B,(int)strtol(B,NULL,36)); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Dezembro 27, 2008 Bem interessante! Vai ajudar o pessoal que ta iniciando. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Dezembro 27, 2008 Principalmente a mim, que provavelmente não vou ter que mudar códigos porque usam itoa p/ conversão. Compartilhar este post Link para o post Compartilhar em outros sites