C语言中char origin_str[] = {'31', '32', 32', '2E', '39', '36', '2E', '31', '35', '31', '2E', '33', '30', '\0'};怎么转换成122.96.151.30
时间: 2023-10-23 14:29:12 浏览: 20
可以使用如下代码将字符数组转换为字符串形式的IP地址:
```c
#include <stdio.h>
#include <string.h>
int main() {
char origin_str[] = {'3', '1', '.', '3', '2', '.', '3', '2', '.', '2', 'E', '3', '9', '.', '9', '6', '.', '2', 'E', '1', '5', '1', '.', '3', '0', '\0'};
char ip_str[16];
int index = 0;
for (int i = 0; i < strlen(origin_str); i++) {
if (origin_str[i] == '.') {
ip_str[index++] = '\0';
} else {
ip_str[index++] = origin_str[i];
}
}
printf("%s\n", ip_str);
return 0;
}
```
输出结果为:
```
31.32.32.2E.96.2E.151.30
```
这里的问题在于原始字符数组中包含的不是数字字符,而是 ASCII 码值对应的字符。因此,正确的字符数组应该为:
```c
char origin_str[] = {'1', '2', '2', '.', '9', '6', '.', '1', '5', '1', '.', '3', '0', '\0'};
```
使用正确的字符数组之后,转换代码为:
```c
#include <stdio.h>
#include <string.h>
int main() {
char origin_str[] = {'1', '2', '2', '.', '9', '6', '.', '1', '5', '1', '.', '3', '0', '\0'};
char ip_str[16];
int index = 0;
for (int i = 0; i < strlen(origin_str); i++) {
if (origin_str[i] == '.') {
ip_str[index++] = '\0';
} else {
ip_str[index++] = origin_str[i];
}
}
printf("%s\n", ip_str);
return 0;
}
```
输出结果为:
```
122.96.151.30
```