Dividir string, scanff -
Stronda xD - 09.06.2014
Eu tenho a seguinte linha: Stronda_xD/09-06-2014 19:10:20/0/8
e Queria dividi-la assim:
Stronda_xD
09
06
2014
19
10
20
0
8
Usando o scanff, peзo desculpa por um tуpico com uma dъvida tгo simples, mas nгo encontrei uma forma de dividi-la de uma vez, eu tentei entende olhando a wiki da scanff mas estб em inglкs e nгo tem nenhum caso parecido.
Re: Dividir string, scanff -
MultiKill - 09.06.2014
Nгo entendi sua duvida vocк quer dividir a linha para que?
Re: Dividir string, scanff -
WLSF - 09.06.2014
Sempre que eu queria usar algo relacionado a isso eu olhava a wiki tambйm, tem uns exemplos lб que salvam bastante...
https://github.com/Y-Less/sscanf/wik...ced-Delimiters
No seu caso, й isso que vocк estб procurando.
Vocк pode usar algo do gкnero:
pawn Код:
new string[128] = "Stronda_xD/09-06-2014";
new nome[MAX_PLAYER_NAME];
new dia, mes, ano;
sscanf(string, "p</->s[128]iii", nome, dia, mes, ano);
Onde o
p</-> significa os delimitadores que vocк utilizarб para quebrar a string.
E os demais parвmetros, sгo do sscanf normal, que vocк utilizarб para armazenar nas variбveis.
S - para string, I - para inteiros.
Sу um exemplo bбsico, nгo sei se estб certo, mas partindo do exemplo que ele disponobilizou ali na wiki, seria assim.
Faзa seus testes, e tente montar um que atenda a sua necessidade...
Abraзos.
Re: Dividir string, scanff -
Stronda xD - 09.06.2014
Quote:
Originally Posted by Willian_Luigi
Sempre que eu queria usar algo relacionado a isso eu olhava a wiki tambйm, tem uns exemplos lб que salvam bastante...
https://github.com/Y-Less/sscanf/wik...ced-Delimiters
No seu caso, й isso que vocк estб procurando.
Vocк pode usar algo do gкnero:
pawn Код:
new string[128] = "Stronda_xD/09-06-2014"; new nome[MAX_PLAYER_NAME]; new dia, mes, ano; sscanf(string, "p</->s[128]iii", nome, dia, mes, ano);
Onde o p</-> significa os delimitadores que vocк utilizarб para quebrar a string.
E os demais parвmetros, sгo do sscanf normal, que vocк utilizarб para armazenar nas variбveis.
S - para string, I - para inteiros.
Sу um exemplo bбsico, nгo sei se estб certo, mas partindo do exemplo que ele disponobilizou ali na wiki, seria assim.
Faзa seus testes, e tente montar um que atenda a sua necessidade...
Abraзos.
|
Eu tentei, mas tentei dividindo tudo de uma vez logo, usando (p</-:> e p</- :/>) porem dava erros
Quote:
Originally Posted by MultiKill
Nгo entendi sua duvida vocк quer dividir a linha para que?
|
Preciso trabalhar com cada Valor separado
@Edit
Eu tentei usando:
pawn Код:
sscanf("Stronda_xD/16-02-2014", "p</->s[128]iii", str, dia, mes, ano); printf("%s\n%d\n%d\n%d", str, dia, mes, ano);
e Deu:
Код HTML:
[19:56:15] sscanf warning: Unclosed specifier parameter, assuming '<', consider using something like p<<>.
[19:56:15] sscanf warning: Unknown format specifier '/', skipping.
[19:56:15] sscanf warning: Unknown format specifier '-', skipping.
[19:56:15] sscanf warning: Unknown format specifier '>', skipping.
[19:56:15] Stronda_xD/16-02-2014
Re: Dividir string, scanff -
WLSF - 09.06.2014
pawn Код:
public OnGameModeInit()
{
new nome[24],
dia, mes, ano;
sscanf("Stronda_xD/09-06-2014", "p</>s[24]p<->ip<->ip<->i", nome, dia, mes, ano);
printf("%s, %02d/%02d/%04d", nome, dia, mes, ano);
}
p</>s[24] - Pra separar o nome, pela barra "/"
p<->i - Pra separar o dia, e os outros valores inteiros, pelo traзo "-"
Oque eu fiz foi escolher um delimitador para cada variбvel.
Poderia ser feito da seguinte forme tambйm:
pawn Код:
sscanf("Stronda_xD/09-06-2014", "p</>s[24]p<->iii", nome, dia, mes, ano);
Onde vocк iria escolher "/" como delimitador para a string e "-" para os prуximos 3 valores inteiros localizados com o traзo.
a 2є forma tб simplificada perto da primeira, mas й bom conhecer todas as formas, caso vocк precise delas algum dia.
Agora tб testado e funcionando, como eu falei, й sу questгo de analisar os exemplos que ele deu, e ir montando o seu de acordo com a sua necessidade...
Do jeito que eu fiz, ele tб separando o nome, dia, mкs e ano.
Sу falta vocк mandar ele separar o tempo.
Abraзos.
Re: Dividir string, scanff -
Stronda xD - 09.06.2014
Quote:
Originally Posted by Willian_Luigi
pawn Код:
public OnGameModeInit() { new nome[24], dia, mes, ano;
sscanf("Stronda_xD/09-06-2014", "p</>s[24]p<->ip<->ip<->i", nome, dia, mes, ano);
printf("%s, %02d/%02d/%04d", nome, dia, mes, ano); }
p</>s[24] - Pra separar o nome, pela barra "/"
p<->i - Pra separar o dia, e os outros valores inteiros, pelo traзo "-"
Oque eu fiz foi escolher um delimitador para cada variбvel.
Poderia ser feito da seguinte forme tambйm:
pawn Код:
sscanf("Stronda_xD/09-06-2014", "p</>s[24]p<->iii", nome, dia, mes, ano);
Onde vocк iria escolher "/" como delimitador para a string e "-" para os prуximos 3 valores inteiros localizados com o traзo.
a 2є forma tб simplificada perto da primeira, mas й bom conhecer todas as formas, caso vocк precise delas algum dia.
Agora tб testado e funcionando, como eu falei, й sу questгo de analisar os exemplos que ele deu, e ir montando o seu de acordo com a sua necessidade...
Do jeito que eu fiz, ele tб separando o nome, dia, mкs e ano.
Sу falta vocк mandar ele separar o tempo.
Abraзos.
|
Sim sim, eu nгo postei aqui mas jб tinha descobrido isso com seu primeiro post, e jб consegui a parte da hora:
pawn Код:
sscanf("Stronda_xD/16-02-1999 18:32:99", "p</>s[128]p<->iiip<:>iii", str, dia, mes, ano, hora, minutos, segundos); printf("%s\n%d\n%d\n%d\n%d\n%d\n%d", str, dia, mes, ano, hora, minutos, segundos);
@Resolvido