文章
12
粉丝
411
获赞
28
访问
167.6k
/*题目:输入一串字符,判断该字符串是否为点分十进制的IP地址,
若是则转换为16进制输出,否则输出“Error”*/
#include <stdio.h>
#include <string.h>
#define M 100
int main() {
char s[M];
int num_x[M] = {0};//标记每一位上的ip,共4位
int pot_count = 0;
int flag = 0;//标记是否合法,0合法
gets(s);//输入ip
int i, j;
for (i = 0; i < strlen(s); i++) {
if ((s[i] > '9' || s[i] < '0') && s[i] != '.') {
flag = 1;//错误标记
}
if (s[i] == '.') {
pot_count++;//标记点的个数
} else {
num_x[pot_count] = num_x[pot_count] * 10 + s[i] - '0';
//printf("%d ", num_x[pot_count]);
}
}
//判断点的数量是不是3
if (pot_count != 3) {
flag = 1;//数目不对,错误
}
for (i = 0; i < 4; i++) {
if (num_x[i] < 0 || num_x[i] > 255) {
flag = 1;
}
}
if (flag) {
printf("Error");
} else {
printf("0x%02X%02X%02X%02X", num_x[0], num_x[1], num_x[2], num_x[3]);
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发