SSCANF is not splitting string to Variables
#1

Hello all,

My sscanf is not splitting the string to variables.
pawn Код:
new PlayerInfo[MAX_PLAYERS][PlayerData];

enum PlayerData
{
    pClanName[25],
    pIsInClan,
    pClanPlayerName,
    pClanPlayerRank
}

if(!strcmp(cmdtext, "/testclan", true))
{
      new str[128];
      format(str, 128, "[%s]", PlayerInfo[playerid][pClanName]);
      SendClientMessage(playerid, -1,str);
      return 1;
}  

stock LoadPlayer(playerid)
{
    new query3[500];
    format(query3,sizeof(query3),"SELECT `clanname`,`playername`,`playerclanrank`,`isinclan` FROM `"#MYSQL_ACCOUNT_TABLE3"` WHERE `PlayerName` = '%s'", GetName(playerid));
    if(mysql_ping(gSQL))
    {
        mysql_query(query3, _THREAD_LOAD_PLAYER3, playerid, gSQL);
    }
    return 1;
}
case _THREAD_LOAD_PLAYER3 :
        {
            mysql_store_result();
            if(mysql_num_rows(gSQL) > 0)
            {
                new resultline[512];
               
                mysql_fetch_row_format(resultline);

                if(sscanf(resultline, "s[25]s[25]dd",
                    PlayerInfo[extraid][pClanName],
                    PlayerInfo[extraid][pClanPlayerName],
                    PlayerInfo[extraid][pClanPlayerRank],
                    PlayerInfo[extraid][pIsInClan]
                    ))
                    {
                        mysql_free_result();
                        return 1;
                    }
            }
            mysql_free_result();
        }
The testclan command returns the follow text:
Код:
[acnr|Admigo|4|1]
While it only needs to return the clanname.
How can i fix this?

Admigo
Reply
#2

You need to use "p<|>" in the sscanf function before "s[25]s[25]dd". It should look like this:
pawn Код:
if(sscanf(resultline, "p<|>s[25]s[25]dd",
                    PlayerInfo[extraid][pClanName],
                    PlayerInfo[extraid][pClanPlayerName],
                    PlayerInfo[extraid][pClanPlayerRank],
                    PlayerInfo[extraid][pIsInClan]
                    ))
Reply
#3

Quote:
Originally Posted by QuaTTrO
Посмотреть сообщение
You need to use "p<|>" in the sscanf function before "s[25]s[25]dd". It should look like this:
pawn Код:
if(sscanf(resultline, "p<|>s[25]s[25]dd",
                    PlayerInfo[extraid][pClanName],
                    PlayerInfo[extraid][pClanPlayerName],
                    PlayerInfo[extraid][pClanPlayerRank],
                    PlayerInfo[extraid][pIsInClan]
                    ))
Thanks,fixed.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)