Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int check(int a){
- return a < 0 || a > 255;
- }
- char * int_bin(int a){
- char* ans = (char*)malloc(9 * sizeof(char));
- for (int i = 0; i < 8; ++i){
- ans = '0';
- }
- for (int i = 0; i < 8; ++i){
- int c1 = (a >> (7 - i));
- int c2 = c1 % 2;
- if (c2>0)
- ans[i] = '1';
- }
- ans[8] = '\n';
- return ans;
- }
- int main() {
- int a1, a2, a3, a4;
- scanf("%d.%d.%d.%d", &a1, &a2, &a3, &a4);
- int b1, b2, b3, b4;
- scanf("%d.%d.%d.%d", &b1, &b2, &b3, &b4);
- if(check(a1) || check(a2) || check(a3) || check(a4)){
- printf("wrong IP");
- return 0;
- }
- else if (check(b1) || check(b2) || check(b3) || check(b4)){
- printf("wrong MASK");
- return 0;
- }
- char * mask = "";
- mask = int_bin(b1);
- strcat(mask, int_bin(b2));
- strcat(mask, int_bin(b3));
- strcat(mask, int_bin(b4));
- int was0 = 0;
- for (int i = 0; i <32; ++i){
- if (mask[i]=='1' && !was0)
- continue;
- else if (mask[i] == '0')
- was0 = 1;
- else{
- printf("wrong MASK");
- return 0;
- }
- }
- printf("%d.%d.%d.%d", a1 & b1, a2 & b2, a3 & b3, a4 & b4);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement