04/09/2021 12:42 
	
	
	
		tutorial de como utilizara a porra do strtok... ( para eu mesmo não esquecer e/ou os outro aprenderem a utilizar! )
strtok serve para achar string após o ESPAÇO " ", a galera utiliza bastante para argumentação ( comum em gm antiga ), mesmo tendo outros concorrentes
como sscanf.
strtok (str1,&index);
exemplo (irei usar strcmp):
Resumidamente:
o strtok, pega a proxima string depois do espaço.
exemplo:
e assim vai, pegando string pós espaço!
ok, porque IDX?
* idx, seria INDEX, seria quantidade de elementos seria para capturar.
exemplo
resumidamente, o INDEX 0, deixa INFININTO o numero de argumentos,
já INDEX 1, se limite a 2
INDEX 2, se limita a 3
INDEX 3, se limita a 4
...........4................5
..........6................7
......
....
e assim por diante..
	
	
	
strtok serve para achar string após o ESPAÇO " ", a galera utiliza bastante para argumentação ( comum em gm antiga ), mesmo tendo outros concorrentes
como sscanf.
strtok (str1,&index);
exemplo (irei usar strcmp):
Código:
public OnPlayerCommandText(playerid, cmdtext[]){
    new cmd[128];
    new tmp[128];
    new idx;
    comando_cortado = strtok(cmdtext, idx); 
    if(strcmp(comando_cortado,"/comado",true)==0){  // jogador usa /comando [argumento1] [argumento2] [argumento3]
         new var1[20];
         new var2[20];
         new var3[20];
         var1= strtok(cmdtext, idx); // var1 vira argumento 1
         var2= strtok(cmdtext, idx); // var2 vira argumento 2
         var3 = strtok(cmdtext, idx); // var3 vira argumento 3
         if(!strlen(var1)){ // comparar o tamanho da string, se for 0 ( nada ) vai retornar printar
                printf("argumento var1 não encontrado!");
         }
         if(!strlen(var2)){
                printf("argumento var2 não encontrado!");
         }
        if(!strlen(var3)){
                printf("argumento var3 não encontrado!");
         }
    }
}Resumidamente:
o strtok, pega a proxima string depois do espaço.
exemplo:
Código:
new idx=0;
string = "FEIJOADA È MUTO BOM SABIA"
          \/       |  \/  \/   \/
          0        1   2    3    4
strtok(string,idx) = FEIJOADA
strtok(string,idx) = É
strtok(string,idx) = MUITO
strtok(string,idx) = BOM
strtok(string,idx) = SABIA
strtok(string,idx)....e assim vai, pegando string pós espaço!
ok, porque IDX?
* idx, seria INDEX, seria quantidade de elementos seria para capturar.
exemplo
Código:
new idx = 1
string = "porta samp ok"
strtok(string,idx) = "orta" // index[0]
strtok(string,idx) = "amp" //index[1]
strtok(string,idx) = "" //index[3] // Não apareceu porque exerceu o limite definido no INDEXresumidamente, o INDEX 0, deixa INFININTO o numero de argumentos,
já INDEX 1, se limite a 2
INDEX 2, se limita a 3
INDEX 3, se limita a 4
...........4................5
..........6................7
......
....
e assim por diante..
Código:
stock 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;
}Citar:
Gostou do meu conteúdo? que tal me ajudar com alguma reputação? ( Estrela )

	   
	
![[Imagem: bqXFE9c.gif]](https://i.imgur.com/bqXFE9c.gif)
![[Imagem: 5I0uca9.png]](https://i.imgur.com/5I0uca9.png)