[DUVIDA] strtok
#1

galera
definitivamente eu nao consigo interpretar o codigo dessa funзгo...

dъvida1 -> Quando que o primeiro while ocorre? Quando string[index] vai ser menor ou igual a espaзo (' ') ??

PHP код:
strtok(const string[], &index)
{
    new 
length strlen(string);
    while ((
index length) && (string[index] <= ' '))
    {
        
index++;
    }
 
    new 
offset index;
    new 
result[20];
    while ((
index length) && (string[index] > ' ') && ((index offset) < (sizeof(result) - 1)))
    {
        
result[index offset] = string[index];
        
index++;
    }
    
result[index offset] = EOS;
    return 
result
duvida2 -> E esse index? Ele eh declarado mas nao recebe valor nenhum! como eh possivel fazer uma comparaзгo desse jeito??

PHP код:
public OnPlayerCommandText(playeridcmdtext[])
{
    new
        
index,
        
cmd[20];
    
cmd strtok(cmdtextindex);
    if (
strcmp(cmd"/heal"true) == 0)
    {
        new
            
tmp[20],
            
id;
        
tmp strtok(cmdtextindex);
        if (
strlen(tmp))
        {
            
id strval(tmp);
            if (
IsPlayerConnected(id))
            {
                
SetPlayerHealth(id100.0);
                
SendClientMessage(id0x00FF00AA"You have been healed");
                
SendClientMessage(playerid0x00FF00AA"Player healed");
            }
            else
            {
                
SendClientMessage(playerid0xFF0000AA"Player not found");
            }
        }
        else
        {
            
SendClientMessage(playerid0xFF0000AA"Usage: \"/heal <playerid>\"");
        }
        return 
1;
    }
    return 
0
Reply
#2

http://forum.sa-mp.com/showthread.ph...utorial+strtok //Espaсol/Spanish

http://forum.sa-mp.com/showthread.ph...utorial+strtok //Inglкs

http://forum.sa-mp.com/showthread.ph...tok#post798644 //Portuguкs
Reply
#3

Vou explicar, o primeiro loop sу continua rodando enquanto o tamanho da string for menor que index ( mas o que й index ? index й o lugar onde se encontra o parвmetro. ), e tambйm vк se string[index] que й por exemplo em um comando do tipo /comando 9 6 para achar o 6 teria que ter um 11 no lugar de index entгo seria string[11], ele vai acessar a cйlula 11 que equivale a 32 (tambйm conhecido por ' ')
Reply
#4

poxa kara
eu agradeзo sua boa vontade
mas isso nao ajudo nada
eu li os 3
ja sabia de 90% do conteudo que ta escrito ai
mas nao explicam nenhuma das minhas dъvidas...
muito menos a dъvida1...
O mais perto que alguem chegou foi o LeLeTe que disse
Quote:

while ((index < length) && (string[index] <= ' '))//Aqui ele vк se a string tem um espaзo. Enquanto ela tiver, o script continua.

mas isso nao ta explicando, so ta postulando uma informaзao (e msm assim de forma incompleta)

vou tentar explicar melhor a pergunta...
quando string[index] vai ser menor ou igual a espaзo??

vamos pegar um exemplo com o comando "/darvida [id]"

ok, SUPONDO que o index comece com valor = 0...
ao verificar as condiзхes do while:

condiзгo1: (index < length) -> ou seja, index = 0; lenght = 13; 0<13. condiзгo1 = true

condiзгo2: (string[index] <= ' ') -> string[0] = '/'
pela tabela ASCII '/' = 47 e ' ' = 32
47 < 32. Condiзгo2 = false

portanto as condiзхes do while nao seriam aceitas e, dessa forma, nada aconteceria.

obviamente sabemos que isso nao eh verdade, e essa eh minha duvida: PQ??



Quote:
Originally Posted by RockFire
Посмотреть сообщение
Vou explicar, o primeiro loop sу continua rodando enquanto o tamanho da string for menor que index ( mas o que й index ? index й o lugar onde se encontra o parвmetro. ), e tambйm vк se string[index] que й por exemplo em um comando do tipo /comando 9 6 para achar o 6 teria que ter um 11 no lugar de index entгo seria string[11], ele vai acessar a cйlula 11 que equivale a 32 (tambйm conhecido por ' ')
enquanto o tamanho da string for MAIOR que o index vc quis dizer neh?

mas o 32 eh menor que qualquer letra, letra case e numero... dessa forma o loop nunca ocorre :S
Reply
#5

ngm sabe??

kd os viciados em Pawn de plantao?? =D

=(
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)