Показать полную графическую версию : бесконечный цикл. Функция не возвращает FALSE ?
xamelion
19-09-2005, 07:44
$ip = "192.168.55.250";
while ($ipinfo = sscanf($ip, "%d\x2E%d\x2E%d\x2E%d")) {
list ($ip1, $ip2, $ip3, $ip4) = $ipinfo;
echo "$ip1<BR>$ip2<BR>$ip3<BR>$ip4<BR>";
};
почему заклинило ?
насколько я понимаю функция sscanf() должна выдать false в конечном итоге и цикл должен приостановится. Значит я ниправильно задал значении функции.
\x2E = ansii формат точки, проверить можно
echo "\x2E";
Vlad Drakula
19-09-2005, 09:13
xamelion
извеняюсь но то что вы написали это просто бред!
$ip = "192.168.55.250";
$ipinfo = split($ip, "."))
list ($ip1, $ip2, $ip3, $ip4) = $ipinfo;
echo "$ip1<BR>$ip2<BR>$ip3<BR>$ip4<BR>";
насколько я понимаю функция sscanf() должна выдать false в конечном итоге и цикл должен приостановится. Значит я ниправильно задал значении функции.
и почемуже sscanf() должна выдать false ???
в мануале о false ничего не сказано!
aESThete
19-09-2005, 09:20
Хм... имхо (по аналогии с C++) sscanf только читает из строки, а саму ее не меняет, т.е. каждый раз у вас заново читается.
А без цикла прочитать сразу все переменные конструкцией вида
sscanf($ip, "%d\x2E%d\x2E%d\x2E%d", $ip1, $ip2, $ip3, $ip4)
не получается?
Vlad Drakula
19-09-2005, 09:51
aESThete
sscanf($ip, "%d\x2E%d\x2E%d\x2E%d", &$ip1, &$ip2, &$ip3, &$ip4);
aESThete
19-09-2005, 10:37
Vlad Drakula
Спасибо за поправку насчет передачи адресом (практики давно нет, подзабываю элементарщину).
Вот еще: меня смущает применение "%d" для чтения в строку.
xamelion
19-09-2005, 14:21
Ну что я могу сказать, ну признаюсь, чайник я, ну учусь я писать, все кто помогли мне вырожаю огромное спасибо.
Учение дело тяжелое, я вот в 4 строках делаю ошибку, да так что пофиксить никто не может....
http://forum.oszone.net/showthread.php?p=356562#post356562
Vlad Drakula
спасибо за компактный код.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.