Szerző Téma: sscanf hiba.  (Megtekintve 1305 alkalommal)

Nem elérhető Zsoma

  • 516
    • Profil megtekintése
sscanf hiba.
« Dátum: 2011. július 04. - 17:58:48 »
0 Show voters
Sziasztok! :)
Olyan probléma merült fel scriptelésem során, hogy
csináltunk egy \"funkciót\", ami MySQLbõl tárol adatokat.
[pawn]new result[ 100 ];
         mysql_fetch_row_format( result );
         mysql_free_result(  );
         sscanf( result, \"s[24]s[24]d\",
         PlayerInfo[ playerid ][ Nev ],
         PlayerInfo[ playerid ][ Jelszo ],
         PlayerInfo[ playerid ][ Keszpenz ],[/pawn]
Tesztelésképpen csináltam egy parancsot, ami az egyik adatot írja le.
Az adatbázisban 0 van, de a parancsra 90et ír.
Íme a parancs:
[pawn]if(strcmp(cmdtext, \"/év\", true) == 0) {
    new szoveg[128];
    format(szoveg, (sizeof szoveg), \"Életkorod: %d\", PlayerInfo[ playerid ][ Eletkor ]);
    SendClientMessage(playerid, ZOLD, szoveg);
    return 1;
}[/pawn]
Aki tudja az okokat, kérem segítsen. :)
Köszönöm.
zsoma
« Utoljára szerkesztve: 2011. július 04. - 19:32:11 írta Zsoma »

sscanf hiba.
« Válasz #1 Dátum: 2011. július 04. - 20:21:31 »
0 Show voters
Printeld ki az eredményt konzolba lehet akkor kiderül mi okozza.
 

new result[ 100 ];
mysql_fetch_row_format( result );
print(result);
mysql_free_result(  );
sscanf( result, \"s[24]s[24]d\", PlayerInfo[ playerid ][ Nev ], PlayerInfo[ playerid ][ Jelszo ], PlayerInfo[ playerid ][ Keszpenz ]);
printf(\"%s | %s | %d\",  PlayerInfo[ playerid ][ Nev ], PlayerInfo[ playerid ][ Jelszo ], PlayerInfo[ playerid ][ Keszpenz ]);

Nem elérhető Zsoma

  • 516
    • Profil megtekintése
sscanf hiba.
« Válasz #2 Dátum: 2011. július 04. - 20:36:40 »
0 Show voters
Nos. Logban van egy ilyen:
[pawn]sscanf warning: string buffer overflow[/pawn]

sscanf hiba.
« Válasz #3 Dátum: 2011. július 04. - 20:45:20 »
0 Show voters
Mekkora méret van meghatározva az enum tömben a Nev és  Jelszo változónak?
Ha 24 akkor próbának írd át a sscanfben 25-re. (\"s[25]s[25]d\")
És a feljebb postolt print sorokkal próbáld ki az egészet hogy egyáltalán lásd azt is mit olvasott be a mysql adatbázisból.

Nem elérhető Zsoma

  • 516
    • Profil megtekintése
sscanf hiba.
« Válasz #4 Dátum: 2011. július 04. - 20:55:53 »
0 Show voters
Tulajdonképpen egy integert szeretnék beolvastatni..  ^-^
Az enumban nincs meghatározva a mérete. (Egyértelmûen az integernek nem, sem a stringnek)

sscanf hiba.
« Válasz #5 Dátum: 2011. július 04. - 21:05:23 »
0 Show voters
Idézetet írta: Zsoma date=1309805753\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"9404\" data-ipsquote-contentclass=\"forums_Topic
Tulajdonképpen egy integert szeretnék beolvastatni..  ^-^
Az enumban nincs meghatározva a mérete. (Egyértelmûen az integernek nem, sem a stringnek)
 
What?  (Tudom hogy túl rövid hsz. de akkor is What?)  :\'(
Hogy hogy az enumban nincs egy string változónak meghatározva a mérete?
Nem így néz ki az adattömb struktura?
 

enum
blabla
{
Nev[MAX_PLAYER_NAME],
Jelszo[24],
Keszpenz
};
new
PlayerInfo[MAX_PLAYERS][blabla];

Nem elérhető Zsoma

  • 516
    • Profil megtekintése
sscanf hiba.
« Válasz #6 Dátum: 2011. július 04. - 21:11:01 »
0 Show voters
Nem.  :o ::|

sscanf hiba.
« Válasz #7 Dátum: 2011. július 04. - 22:03:18 »
0 Show voters
Hát sajnos msnen se jutottam többre tudom hogy kicsit erõszakos vagyok de ha pont a javasolt dolgok nincsenek kipróbálva akkor soha senki nem fog tudni neked megfelelõen segíteni. Sajnos a segíteni akaró ember nem ül ott a géped elõtt és elmagyarázni hogy miket írtál rosszul a kódban. Így távolról rohadt nehéz ezt megtenni.
Edit:
Hát nehéz eset volt de csak sikerült megoldani. Persze ha az ember ott ülne a gép elõtt ahol nem mûködik megfelelõen a dolog, akkor egyszerûbb lett volna.  8)
« Utoljára szerkesztve: 2011. július 04. - 23:48:06 írta Zsolesszka »

Nem elérhető Zsoma

  • 516
    • Profil megtekintése
sscanf hiba.
« Válasz #8 Dátum: 2011. július 04. - 23:59:55 »
0 Show voters
Hiányzott a p<|> . . . .  :-X
Köszönjük Zsoltinak az éjjeli mentést.  ::| :P ;D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal