PDA

Просмотр полной версии : [Вопрос] sscanf warning



_TranE_
16.09.2015, 00:11
Здравствуйте. Летят варнинги в логи сервера при каждом использовании:

sscanf warning: Format specifier does not match parameter count.
Как исправить?


if(text[0] == '!')
{
strdel(text,0,1);
if(strlen(text) == 0) return 0;
new sid = -1;
if(sscanf(text,"p< >d{s}",sid)) return 0;
if(!IsPlayerConnected(sid)) return 0;
new bool:sfp = false;
for(new i = 0; i < strlen(text); i++)
{
if(!sfp)
{
if(text[i] == ' ')
{
sfp = true;
strdel(text,0,i+1);
i = 0;
}
}
else
{
if(text[i] == ' ')
{
strdel(text,0,i+1);
i--;
}
else break;
}
}
if(strlen(text) == 0) return 0;
new sn[32],tn[32],stext[144];
GetPlayerName(playerid,sn,32);
GetPlayerName(sid,tn,32);
format(stext,144,"%s [%d]: {ffffff}%s, %s",sn, playerid, tn, text);
SendClientMessageToAll(GetPlayerColor(playerid),stext);
return 0;
}

#Vito
16.09.2015, 00:53
if(sscanf(text,"p< >d{s}",sid)) return 0;
При использовании sscanf нужно устанавливать размер массива.

То есть:

if(sscanf(text,"p< >d{s[32]}",sid)) return 0;

_TranE_
16.09.2015, 00:58
Не помогло..


[01:57:45] [chat] [_TranE_]: !0 тест
[01:57:45] sscanf warning: Format specifier does not match parameter count.
[01:57:48] [chat] [_TranE_]: !0 тест
[01:57:48] sscanf warning: Format specifier does not match parameter count.
[01:57:49] [chat] [_TranE_]: !0 тест
[01:57:49] sscanf warning: Format specifier does not match parameter count.
[01:57:49] [chat] [_TranE_]: !0 тест
[01:57:49] sscanf warning: Format specifier does not match parameter count.

#Vito
16.09.2015, 01:09
Вгляделся в код, немного не понял что делает эта сис-ма.. Но

if(sscanf(text,"p< >d{s}",sid)) return 0;
Зачем тебе два параметра, если массив один?

sid - ID игрока?
Попробуй так..

if(sscanf(text,"d",sid)) return 0;

_TranE_
16.09.2015, 01:18
Вгляделся в код, немного не понял что делает эта сис-ма.. Но

if(sscanf(text,"p< >d{s}",sid)) return 0;
Зачем тебе два параметра, если массив один?

sid - ID игрока?
Попробуй так..

if(sscanf(text,"d",sid)) return 0;

Спасибо, помогло, с меня +. Тему можно закрывать.