Я написал код ниже, он работает нормально.
Но как-то я, как новичок, не чувствую себя комфортно и думаю, что можно написать это короче.
Код в основном обнаруживает xxx в ipAddress [0-4] и затем печатает блок ips.
Мой вопрос: возможно ли написать этот более короткий и эффективный, другими словами, могу ли я сделать глубину цикла for зависимой от значения ipaddress [0] - [4]
Спасибо.
short ipAddress[4];
extractIpAddress(argv[1],&ipAddress[0]);
printf("\nIp Address: %03d. %03d. %03d. %03d\n",ipAddress[0],ipAddress[1],ipAddress[2],ipAddress[3]);
if(ipAddress[0] == 255) {
for ( ipAddress[0]=0; ipAddress[0] <= 255; ++ipAddress[0] )
for ( ipAddress[1]=0; ipAddress[1] <= 255; ++ipAddress[1] )
for (ipAddress[2]=0; ipAddress[2] <= 255; ++ipAddress[2] )
for (ipAddress[3]=0; ipAddress[3] <= 255; ++ipAddress[3] )
printf( "%d.%d.%d.%d\n", ipAddress[0], ipAddress[1], ipAddress[2], ipAddress[3]);
}
else if(ipAddress[1] ==255) {
for ( ipAddress[1]=0; ipAddress[1] <= 255; ++ipAddress[1] )
for (ipAddress[2]=0; ipAddress[2] <= 255; ++ipAddress[2] )
for (ipAddress[3]=0; ipAddress[3] <= 255; ++ipAddress[3] )
printf( "%d.%d.%d.%d\n", ipAddress[0], ipAddress[1], ipAddress[2], ipAddress[3]);
}
else if(ipAddress[2] == 255) {
for (ipAddress[2]=0; ipAddress[2] <= 255; ++ipAddress[2] )
for (ipAddress[3]=0; ipAddress[3] <= 255; ++ipAddress[3] )
printf( "%d.%d.%d.%d\n", ipAddress[0], ipAddress[1], ipAddress[2], ipAddress[3]);
}
else if(ipAddress[3] == 255) {
for (ipAddress[3]=0; ipAddress[3] <= 255; ++ipAddress[3] )
printf( "%d.%d.%d.%d\n", ipAddress[0], ipAddress[1], ipAddress[2], ipAddress[3]);
}
- Обновление -
Спасибо и извините, что не сформулировали мой вопрос ясно.
Я пытаюсь сгенерировать список IP-адресов, основываясь на том, что (argv [1] входной IP-адрес) содержит где-нибудь 255, программа напечатает полный диапазон блоков IP, все возможные IP-адреса.
Работает нормально, но я просто хотел узнать и понять, можно ли написать это короче и эффективнее.