|
发表于 2016-7-11 12:35:02
|
显示全部楼层
本帖最后由 人造人 于 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;
- }
复制代码 |
|