strtoll函数的用法
时间: 2023-06-02 17:01:58 浏览: 69
strtoll函数是C语言中的一个函数,用于将字符串转换为长长整型数。
其函数原型为:
```c
long long int strtoll(const char *nptr, char **endptr, int base);
```
- nptr:要转换的字符串指针。
- endptr:指向转换后未使用的字符串部分的指针。如果该参数不为NULL,则函数会将转换后未使用的字符串部分保存到该指针指向的地址中。
- base:进制数。可以为10进制,也可以是其他进制数。
函数返回转换后的长长整型数。
注意事项:
- 如果字符串中第一个非空格字符不是数字或正负号,则该函数返回0。
- 如果转换后的值超过了长长整型数的范围,则会触发溢出,此时函数会返回LONG_LONG_MAX或LONG_LONG_MIN,同时设置errno为ERANGE。
- 如果endptr指向的地址为NULL,则忽略该参数,函数不会返回未使用的字符串部分。
相关问题
strtoll 使用样例
下面是一个使用 `strtoll` 函数将字符串转换为长长整型的示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "123456789";
long long num;
num = strtoll(str, NULL, 10);
printf("The converted number is: %lld\n", num);
return 0;
}
```
这个程序将字符串 "123456789" 转换为长长整型,并将其打印出来。函数 `strtoll` 的第一个参数是要转换的字符串,第二个参数是一个指向字符指针的指针,用于存储第一个不能被转换为数字的字符的地址,第三个参数是进制数。在这个例子中,我们将进制数设置为 10,表示十进制数。如果转换成功,函数将返回转换后的长长整型数。
linux环境下 _atoi64()函数
在 Linux 系统下,可以使用 `strtoll()` 函数来实现类似于 Windows 系统下 `_atoi64()` 函数的功能。`strtoll()` 函数的定义如下:
```c
long long int strtoll(const char *nptr, char **endptr, int base);
```
其中,`nptr` 参数是待转换的字符串,`endptr` 参数是一个指向字符指针的指针,表示转换过程中停止的位置,`base` 参数是转换的进制数。如果转换成功,则返回转换后的长长整型数值;如果转换失败,则返回 0。需要注意的是,如果待转换的字符串超出了长长整型数值的范围,那么返回的数值就是长长整型数值的上限或下限值,而不会报错。
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[] = "9223372036854775807";
char *endptr;
long long int num = strtoll(str, &endptr, 10);
if (endptr == str) {
printf("转换失败!\n");
} else {
printf("转换成功:%lld\n", num);
}
return 0;
}
```
该代码将字符串 "9223372036854775807" 转换为长长整型数值,并将结果输出到终端上。如果转换成功,则输出转换后的数值;如果转换失败,则输出错误信息。