本帖最后由 人造人 于 2016-7-11 12:36 编辑
123456789999999999
这个数太大了,需要 unsigned long long 类型才能存放
标准库中只有这些吗?
_CRTIMP double __cdecl __MINGW_NOTHROW atof (const char*);
_CRTIMP int __cdecl __MINGW_NOTHROW atoi (const char*);
_CRTIMP long __cdecl __MINGW_NOTHROW atol (const char*);
我们看来需要一个可以转换 unsigned long long 类型的函数
我自己写了一个#include <stdio.h>
#include <string.h>
unsigned long long my_atol(char const *str) // 名字可能需要换一个,因为是转换到 unsigned long long 类型
{
unsigned long long ret = 0;
int str_len = strlen(str);
int i = 0;
str_len--;
while(1)
{
char current = str[i];
ret = ret * 10 + (current - '0');
if(i == str_len)
{
break;
}
i++;
}
return ret;
}
int main()
{
printf("%llu\n", my_atol("1234567899999999997"));
return 0;
}
|