[Ajuda] Ajuda com sscanf
#1

Tipo, quando faзo
pawn Код:
sscanf(gQuery,"e<p<|>{s[25]s[41]}s[16]iii>",PInfo[playerid]);
printf("IP: %s Money: %i Score: %i Level: %i",PInfo[playerid][pIP],PInfo[playerid][Money],PInfo[playerid][Score],PInfo[playerid][Level]);
Faz print de tudo 0 e IP й null.

Quando faзo
pawn Код:
sscanf(gQuery,"e<p<|>s[25]s[41]s[16]iii>",PInfo[playerid]);
printf("IP: %s Money: %i Score: %i Level: %i",PInfo[playerid][pIP],PInfo[playerid][Money],PInfo[playerid][Score],PInfo[playerid][Level]);
Faz print de tudo como deve de ser...
Qual й o problema?
Reply
#2

pawn Код:
sscanf(gQuery,"e<p<|>{s[25]s[41]}s[16]iii>",PInfo[playerid]);
//Aki vc ta ignorando duas Str.

sscanf(gQuery,"e<p<|>s[25]s[41]s[16]iii>",PInfo[playerid]);
//Aki nгo, aki ele vai preenche-las
Uma coisa, 'PInfo[playerid]' й esse msm o Enum ? nгo seria: 'PInfo' ?
Reply
#3

Quote:
Originally Posted by paulor
Посмотреть сообщение
pawn Код:
sscanf(gQuery,"e<p<|>{s[25]s[41]}s[16]iii>",PInfo[playerid]);
//Aki vc ta ignorando duas Str.

sscanf(gQuery,"e<p<|>s[25]s[41]s[16]iii>",PInfo[playerid]);
//Aki nгo, aki ele vai preenche-las
Uma coisa, 'PInfo[playerid]' й esse msm o Enum ? nгo seria: 'PInfo' ?
Eu quero que nao prencha as 2 primeiras strings.
E й uma enum, mas quero que prencha sу as variaveis do playerid, por isso essa parte ta certa >.<
Reply
#4

Quote:
Originally Posted by FireCat
Посмотреть сообщение
Eu quero que nao prencha as 2 primeiras strings.
E й uma enum, mas quero que prencha sу as variaveis do playerid, por isso essa parte ta certa >.<
Entгo a 1 estб correta!
Reply
#5

Quote:
Originally Posted by paulor
Посмотреть сообщение
Entгo a 1 estб correta!
Mas nгo estб a fazer o load correcto!
Nem nas prints!
Reply
#6

Tente.
pawn Код:
sscanf(gQuery,"e<p<|>{s[" #MAX_PLAYER_NAME "]s[41]}s[16]iii>",PInfo[playerid]);
Reply
#7

pawn Код:
new Str[25], String[41];
strcat(Str, PInfo[0][ITEM_0]); strcat(String, PInfo[0][ITEM_1]); //Altere com os nome dos Itens.
sscaf(gQuery,"e<p<|>s[25]s[41]s[16]iii>",PInfo[0]);
strmid(PInfo[0][ITEM_0], Str, 0, 25); strmid(PInfo[0][ITEM_1], String, 0, 41); //Altere com os nome dos Itens.
printf("IP: %s  Money: %i  Score: %i   Level: %i",PInfo[0][pIP],PInfo[0][Money],PInfo[0][Score],PInfo[0][Level]);
Ъnica maneira funcional que encontrei...
Reply
#8

As strings estгo logo no inicio? Entгo basta passar a string com o caractere inicial acima do ip, й um bom truque de acesso em arrays/strings

Faзa:
sscanf(string ,"e<p<|>{s[1]s[1]}dd>", enumVariable[c]);

A parte em azul vai pular as duas primeiras strings e a segunda parte em vermelho vai aplicar os valores inteiros. A parte verde й a partir de que valor deve ser colocado

Exemplo:
pawn Код:
// declaraзгo  
     
new quesry [] = "127.0.0.1|Bruno|10|10";

enum firefeio {
    a[24], // vamos pular estб parte
    b[24], // vamos pular estб parte
    c , // colocar um valor
    d
}

new brunocat[firefeio] ;



// fazer a 'mбgica'
    sscanf(quesry ,"e<p<|>{s[1]s[1]}dd>", brunocat[c]);
   
// imprimir os dados
// ||10|10                                        

    printf(
        "%s|%s|%d|%d",
        brunocat[a],
        brunocat[b],
        brunocat[c],
        brunocat[d]
    );
Se der "Overflow" basta aumentar o tamanho de s[1]s[1] para o tamanho total das arrays, no meu caso 24

_______

No seu caso ficaria:

sscanf(gQuery,"e<p<|>{s[25]s[41]}s[32]iii>",PInfo[playerid][pIP]);

Assim iria pular as duas strings e aplicar os valores apуs pIP
Reply
#9

Quote:
Originally Posted by ipsBruno
Посмотреть сообщение
As strings estгo logo no inicio? Entгo basta passar a string com o caractere inicial acima do ip, й um bom truque de acesso em arrays/strings

Faзa:
sscanf(string ,"e<p<|>{s[1]s[1]}dd>", enumVariable[c]);

A parte em azul vai pular as duas primeiras strings e a segunda parte em vermelho vai aplicar os valores inteiros. A parte verde й a partir de que valor deve ser colocado

Exemplo:
pawn Код:
// declaraзгo  
     
new quesry [] = "127.0.0.1|Bruno|10|10";

enum firefeio {
    a[24], // vamos pular estб parte
    b[24], // vamos pular estб parte
    c , // colocar um valor
    d
}

new brunocat[firefeio] ;



// fazer a 'mбgica'
    sscanf(quesry ,"e<p<|>{s[1]s[1]}dd>", brunocat[c]);
   
// imprimir os dados
// ||10|10                                        

    printf(
        "%s|%s|%d|%d",
        brunocat[a],
        brunocat[b],
        brunocat[c],
        brunocat[d]
    );
Se der "Overflow" basta aumentar o tamanho de s[1]s[1] para o tamanho total das arrays, no meu caso 24

_______

No seu caso ficaria:

sscanf(gQuery,"e<p<|>{s[25]s[41]}s[32]iii>",PInfo[playerid][pIP]);

Assim iria pular as duas strings e aplicar os valores apуs pIP
pfft odeio essas variaveis! xD
Mas tipo, se eu puser PInfo[playerid][pIP] nгo vai fazer load na enum toda
Й por isso que estou a fazer no inicio do sscanf e< (para espicificar que й uma enum)
e depois p<|> para saber o delimiter.
Se fizermos PInfo[playerid][pIP] nгo vai fazer load na enum toda
Reply
#10

Vocк quer fazer o que afinal? Cortar as duas primeiras strings e as duas primeiras partes da enum? Й aquilo que fiz.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)