#include #define CLASSA(addr) (((unsigned long)(addr) & 0x80000000) == 0) #define CLASSA_HOST(addr) ((unsigned long)(addr) & 0x00ffffff) #define CLASSB(addr) (((unsigned long)(addr) & 0xc0000000) == 0x80000000) #define CLASSB_HOST(addr) ((unsigned long)(addr) & 0x0000ffff) #define CLASSC(addr) (((unsigned long)(addr) & 0xe0000000) == 0xc0000000) #define CLASSC_HOST(addr) ((unsigned long)(addr) & 0x000000ff) unsigned long gethostfromaddr(unsigned long addr) { printf("\nInternetadresse: %u \n", addr); if (CLASSA(addr)) { printf("Class A\n"); return CLASSA_HOST(addr); } else if (CLASSB(addr)) { printf("Class B\n"); return CLASSB_HOST(addr); } else if (CLASSC(addr)) { printf("Class C\n"); return CLASSC_HOST(addr); } else { printf("Falsche Angabe\n"); /*(-1) wird durch den cast (...)in einen unsigned long umgewandelt,*/ /*diese Zahl kann keinem Host entsprechen. */ return (unsigned long) -1; } } int main (void) { unsigned long myaddr; printf("Internetadresse eingeben: "); scanf("%lu", &myaddr); printf("\nInternetadresse: %lu mit Host: %lu \n", myaddr, gethostfromaddr(myaddr)); return 0; }