字符串转数字函数C语言
时间: 2024-10-24 09:00:53 浏览: 37
在C语言中,将字符串转换为整数(int型)可以使用标准库函数`atoi()`、`strtol()`或者` strtol_s() `(对于宽字符支持)。这里简单介绍两个常用的方法:
1. ** atoi() 函数:**
```c
#include <stdio.h>
int main() {
char str[] = "12345";
int num;
num = atoi(str);
// 检查转换是否成功(返回值非负表示成功)
if (num != (int)strtol(str, NULL, 10)) {
printf("Failed to convert string to integer.\n");
} else {
printf("Converted string is: %d\n", num);
}
return 0;
}
```
2. ** strtol_s() 或 strtol() 函数:**
```c
#include <stdlib.h>
#include <string.h>
int main() {
char str[] = "12345";
char *endptr;
long num = strtol(str, &endptr, 10); // 如果需要处理长整型,用long代替int
if (*endptr == '\0' && endptr == str + strlen(str)) { // 成功转换
printf("Converted string is: %ld\n", num);
} else {
printf("Conversion failed or input not a number.\n");
}
return 0;
}
```
`strtol()` 和 `strtol_s()` 的区别在于前者不是安全版本,后者有额外的安全特性。
**注意事项:**
- `atoi()` 只能处理较小范围的整数,并且遇到非数字字符会停止转换。
- `strtol()` 和 `strtol_s()` 能处理更复杂的输入,如正负号、空格等,且返回剩余未转换的指针位置。
- 转换过程中如果字符串不符合数值格式,函数通常会返回错误值。
阅读全文