用C语言将数字字符串装换为整数
时间: 2024-05-03 14:17:32 浏览: 115
可以使用C标准库函数 `atoi()` 或 `strtol()` 将数字字符串转换为整数。
## 1. 使用 `atoi()`
`atoi()` 函数将输入的字符串转换为整数,如果无法转换则返回0。
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "12345";
int num = atoi(str);
printf("%d\n", num);
return 0;
}
```
输出:
```
12345
```
## 2. 使用 `strtol()`
`strtol()` 函数同样可以将字符串转换为整数,但是它有更好的错误处理能力。`strtol()` 函数的原型如下:
```c
long int strtol(const char *nptr, char **endptr, int base);
```
- `nptr`:要转换为整数的字符串。
- `endptr`:指向一个指针,用于存储转换后未被使用的字符的指针。如果该指针的值为 `nptr` 的末尾,则说明整个字符串都已经被转换。如果该指针的值为非空(即指向了一个未被使用的字符),则说明转换过程中出现了错误。
- `base`:进制数。如果为0,则根据字符串的前缀来确定进制数(比如以 "0x" 开头的字符串表示16进制数)。
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "12345";
char *endptr;
long int num = strtol(str, &endptr, 10);
if (*endptr != '\0') {
printf("Error!\n");
} else {
printf("%ld\n", num);
}
return 0;
}
```
输出:
```
12345
```
注意,`strtol()` 函数返回值为 `long int` 类型,而不是 `int` 类型。如果要将结果转换为 `int` 类型,可以使用强制类型转换。另外,`endptr` 指针可以为 `NULL`,不需要保存未被使用的字符指针。
阅读全文