В настоящее время я работаю над домашней работой и не могу получить желаемый результат из приведенного ниже кода.
#include <stdio.h>
int main() {
int base, num, x, y, z, t, choice;
char hexa = 0, a, b, c, d, k, l, m, n, h, g, f, v;
switch (hexa) {
case 'A':
num = 10;
break;
case 'B':
num = 11;
break;
case 'C':
num = 12;
break;
case 'D':
num = 13;
break;
case 'E':
num = 14;
break;
case 'F':
num = 15;
break;
}
printf("Please enter the base:\n");
scanf("%d", &base);
if (base == 10) {
printf("Please enter your ip address:\n");
scanf("%c.%c.%c.%c", &a, &b, &c, &d);
//if((a<0 || a>255) && (b<0 || b>255) && (c<0 || c>255) && (d<0 || d>255)){ //FIX THIS
// printf("Sorry, that is not a valid address!");}
printf("Please enter the sub-net mask\n"); //Skips this line
scanf("%d.%d.%d.%d", &x, &y, &z, &t);
}
else if (base == 16) {
printf("Enter your ip address\n");
scanf("%c.%c.%c.%c", &k, &l, &m, &n);
printf("Enter the subnet mask\n");
scanf("%c.%c.%c.%c", &h, &g, &f, &v);
}
scanf("%d", &choice);
if (choice == 1) { //there is a part that asks which
printf("%c.%c.%c.%c", a, b, c, d); //prints only dots
}
else if (choice == 2) {}
else if (choice == 3) {}
else if (choice == 4) {}
else if (choice == 5) {}
else if (choice == 6) {}
return 0;
}
Поэтому в основном я пытаюсь получить IP-адрес и подсеть и преобразовать их вдвоичный файл, но в соответствии с инструкциями я не могу использовать битовое смещение и %x
, чтобы получить IP-адрес в качестве базы 16. Проблема заключается в том, что я пытаюсь напечатать IP-адрес, указанный printf
, печатает только точки и ничего больше.А также один из пропусков маски подсети scanf
.Я был бы очень рад получить помощь от вас, ребята, потому что у меня не так много друзей, чтобы задавать вопросы.Спасибо.
РЕДАКТИРОВАТЬ : Я не знаю, столкнется ли кто-нибудь с этой проблемой, но мое решение было довольно глупым, но оно работает.Вы в основном принимаете входные данные как scanf("%c%c.%c%c.%c%c.%c%c%c")
, последний %c
предназначен для ввода, поскольку char принимает входные данные в качестве ввода.