-
По sscanf.
В команде есть 3 параметра. Из них обязательных всего 2, один из них может быть как строковым, так и численным. Для каждой ситуации похожие действия. Есть что то помимо такого способа? :
PHP код:
if(!sscanf(params, "ddd", pl, params[0], params[1]))
{
// ...
}
else if(!sscanf(params, "sdd", name, params[0], params[1]))
{
// ...
}
else if(!sscanf(params, "dd", pl, params[0]))
{
// ...
}
else if(!sscanf(params, "sd", name, params[0]))
{
Гуглил, ничего не находил. А такой способ слишком длинный, может подскажите что-то эффективнее? strtok не предлагать, пожалуйста
-
PHP код:
new
text[28];
sscanf(params, "I(-1)I(-1)s[28]", params[0], params[1], text)
if(params[0] == -1)
// -> числовой параметр 0 пропущен
if(params[1] == -1)
// -> числовой параметр 1 пропущен
if(isnull(text))
// -> строковой параметр пропущен
-
У меня строковый параметр в начале. Прокатит?
PHP код:
new
text[28];
sscanf(params, "s[28]I(-1)I(-1)", text, params[0], params[1])
if(isnull(text))
// -> строковой параметр пропущен
if(params[0] == -1)
// -> числовой параметр 0 пропущен
if(params[1] == -1)
// -> числовой параметр 1 пропущен
- - - Добавлено - - -
Плюс, вместо строкового параметра там может быть численный
-
Прокатит в том случае, если в параметре одно слово.
-
А прокатит, если там число? Ну тоесть там или число, либо слово, в любом случае записываю в массив, а затем функцией strval проверю, число там или слово. Ссканф воспримит число как строку?