c语言字符串转为十进制数字
时间: 2024-10-10 22:00:31 浏览: 97
在C语言中,将字符串转换为十进制整数通常需要借助`atoi()`函数或者手动编写循环处理每个字符。这里简单介绍一下使用`atoi()`的例子:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "12345";
int num;
if (str[0] == '\0') { // 空字符串处理
printf("Invalid string.\n");
return 1;
}
num = atoi(str);
if (num == -1) { // 如果转换失败,atoi会返回-1
printf("Error converting string to integer.\n");
} else {
printf("The decimal value is %d\n", num);
}
return 0;
}
```
在这个例子中,`atoi()`函数尝试将字符串`str`解析为整数并存储在变量`num`中。如果字符串不是有效的数字格式,它会返回-1,我们需要额外检查这个结果。
相关问题
c语言0x0375转为十进制函数
你可以使用标准库函数`strtol`将C语言的`0x0375`转换为十进制数。`strtol`函数可以将字符串转换为长整型数,其中第二个参数可以指定进制,例如0x表示16进制。示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_str[] = "0x0375";
char *endptr;
long decimal_num = strtol(hex_str, &endptr, 16);
printf("%s in decimal is %ld\n", hex_str, decimal_num);
return 0;
}
```
输出结果为:
```
0x0375 in decimal is 885
```
其中,`endptr`是指向转换后字符串的结束位置的指针,可以用于检查转换是否成功。
C语言实现十六进制转为十进制
在C语言中,将十六进制数转换为十进制数可以通过循环遍历每一位,并利用十六进制每位对应的权重来计算。下面是一个简单的示例函数,它接受一个十六进制字符串作为输入:
```c
#include <stdio.h>
#include <string.h>
int hex_to_dec(const char* hex_str) {
int decimal = 0;
int len = strlen(hex_str);
for (int i = 0; i < len; ++i) {
if (hex_str[i] >= '0' && hex_str[i] <= '9') {
decimal = decimal * 16 + hex_str[i] - '0';
} else if (hex_str[i] >= 'A' && hex_str[i] <= 'F') { // A-F相当于10-15
decimal = decimal * 16 + hex_str[i] - 'A' + 10;
} else if (hex_str[i] >= 'a' && hex_str[i] <= 'f') { // a-f相当于10-15
decimal = decimal * 16 + hex_str[i] - 'a' + 10;
} else {
printf("Invalid character at index %d\n", i);
return -1; // 或者抛出错误
}
}
return decimal;
}
// 使用示例
int main() {
const char* hex_num = "FF"; // 十六进制数
int dec_num = hex_to_dec(hex_num);
printf("Hexadecimal %s is equal to decimal %d\n", hex_num, dec_num);
return 0;
}
阅读全文