start IP - stop IP
-
hi leute
ich möchte eine IP einlesen und weiterzählen lassen bis zu einer maximal ip.
und es soll die ip in einer zeile eingelesen werden könnenz.B.:
gets(x); -> 112.121.102.11
gets(y); -> 222.122.221.12
und nun soll das prog von x bis y alle IP`s abklappernwie geht das?
-
einfach mit sscanf in einzelne zahlen zerlegen und dann über eine schleife laufen lassen
char szBuffer[16]; int a, b, c, d; gets(szBuffer); if (sscanf(szBuffer,"%d.%d.%d.%d",&a,&b,&c,&d) == 4) //...
-
In die einzelnen Bestandteile zerlegen und dann in Schleifen durchgehen
-
danke es funz
-
T4skFoRcE³ schrieb:
gets(x); -> 112.121.102.11
gets(y); -> 222.122.221.12
und nun soll das prog von x bis y alle IP`s abklappernsubnetmaske fehlt.
-
char szBuffer[16]; char szBuffer2[16]; char IP[16] ; int a, b, c, d, a2, b2, c2, d2; printf("startIP:\n"); gets(szBuffer); printf("stopIP:\n"); gets(szBuffer2); if (sscanf(szBuffer2,"%d.%d.%d.%d",&a2,&b2,&c2,&d2) == 4) { if (sscanf(szBuffer,"%d.%d.%d.%d",&a,&b,&c,&d) == 4) { if(a>=255){a=255;}//eingabe fehler korrektur if(b>=255){b=255;} if(c>=255){c=255;} if(d>=255){d=255;} if(a>=a2){printf("Inkorekter Endwert\n");} if(b>=b2){printf("Inkorekter Endwert\n");} if(c>=c2){printf("Inkorekter Endwert\n");} if(d>=d2){printf("Inkorekter Endwert\n");} if(szBuffer<=szBuffer2){printf("Inkorekter Endwert\n");} while(a<=a2) { if(a>=255){break;} a++; while(b<=b2) { if(b>=255){break;} b++; while(c<=c2) { if(c>=255){break;} c++; while(d<=d2) { if(d>=255){break;} d++; sprintf(IP,"%i.%i.%i.%i",a,b,c,d); cout<<IP<<endl; } b=0; break; } c=0; break; } b=0; break; } } }
und wie krieg ich die schleifen dazu bei der endIP zu stoppen?
-
innendrin
if(ende erreicht) goto hinter die schleifen;
-
juhu THX @ all
heureka ICH HABS//initialisierung char szBuffer[16]; char szBuffer2[16]; char IP[16] ; int a, b, c, d, a2, b2, c2, d2; //initialisierung ende //werteingabe printf("startIP:\n"); gets(szBuffer); printf("stopIP:\n"); gets(szBuffer2); printf("\n"); //werteingabe ende if (sscanf(szBuffer2,"%d.%d.%d.%d",&a2,&b2,&c2,&d2) == 4) { if (sscanf(szBuffer,"%d.%d.%d.%d",&a,&b,&c,&d) == 4) { //eingabe fehler korektur if(a>=255){a=255;} if(b>=255){b=255;} if(c>=255){c=255;} if(d>=255){d=255;} if(a>a2 && b>b2 && c>c2 && d>d2){printf("Inkorekter Endwert\n");} //eingabe fehler korektur ende //IP-Ranger while(true) { sprintf(IP,"%i.%i.%i.%i",a,b,c,d); cout<<IP<<endl; d++; if(d==255){d=0;c++;} if(c==255){c=0;b++;} if(b==255){b=0;a++;} if(a==255){break;} if(a==a2 && b==b2 && c==c2 && d==d2){break;} } //IP-Ranger ende } else {printf("Inkorekter Endwert\n");} } else {printf("Inkorekter Endwert\n");}
-
ekelhaft...
-
dann können wir ja langsam zu gutem code kommen.
wandle firstip in nen u32 um.
wandle lastip in nen u32 um.dann gehts in etwa so:
for(u32 ip=firstip;ip<=lastip;++ip) tuwas(ip);
genial einfach, gell?