linux c 数字字符串转成long long
时间: 2024-09-23 15:06:49 浏览: 36
在Linux C环境中,将数字字符串转换为`long long`类型的整数,通常需要使用`strtol`或`strtoll`函数。这两个函数都属于标准库`stdlib.h`的一部分。以下是基本的步骤:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h> // 包含strlen函数
long long string_to_long_long(const char* str) {
long long result;
int sign = 1;
if (str[0] == '-') { // 检查正负号
sign = -1;
++str;
}
errno = 0; // 初始化错误标志,用于检测是否发生了溢出
result = strtol(str, NULL, 10); // 使用10作为基数,因为默认就是十进制
if (errno != ERANGE && result > INT_MAX || result < INT_MIN) {
perror("Overflow occurred");
return LLONG_MAX; // 如果发生溢出返回最大值
} else {
return sign * result; // 加上原始的正负号
}
}
// 示例用法
int main() {
const char* str_num = "1234567890123456789";
long long num = string_to_long_long(str_num);
printf("String '%s' converted to long long: %lld\n", str_num, num);
return 0;
}
```
这里假设输入是一个有效的十进制数字字符串。如果输入无效或者超过`long long`类型的范围,`strtol`会返回`LONG_LONG_MAX`或`LONG_LONG_MIN`,并设置`errno`标志。
阅读全文