duvida com datas em c

snis

Power Member
ola pessoal

imaginem que:

strftime (buffer,80,"Now is %d-%m-%Y",timeinfo);

a string buffer ficara com algo como: dia-mês-ano (exemplo: 31-08-2007)

ora então o que eu queria era:

com esta estrutura:

struct Data
{
int dia, mês, ano;

};
passar da string o dia para a variável Data.dia , i o mesmo para o mês i ano

abraço
 
simplificando:

string com "28-03-2007"

depois:

com variavel var1 do tipo inteiro (int var1), como posso tirar o 28 da string para a var1?
 
Bem, a forma mais facil e directa que conheço é usando o strtok().
No entato é sempre aconselhavel fazer um pequeno parser, ou seja, ler char a char e interpretar o que leste e passar para as variaveis em questão.
 
estive a estudar o strtok().. tas a dizer dividir a string por "-".. ya ate aí tudo bem.. ja separei os dados...(dia,mes,ano)
i depois converter isso para int? :) é com o parser?
 
esse scanf recebe d onde? input? eu queria os dados da string..

Boas, recebe do stdin por defeito. Usa a função sscanf. Algo do género:

Código:
[SIZE=2]sscanf(buffer, "%d-%d-%d"[/SIZE][SIZE=2], &data.dia, &data.mes, &data.ano);[/SIZE]

O formato da string tem de ser exactamente "dia-mês-ano", e não "Now is dia-mês-ano".

Podes também usar o strtok e atoi como o CoolMaster referiu, mas penso que com o sscanf é mais prático.
 
Sim também era assim que fazia :P E ainda me lembro de arranjar maneira de ler o relogio do PC mas ja não me lembro do código! Tenho que ver se encontro o source code do meu projecto de Introdução à Programação!
 
Sim também era assim que fazia :P E ainda me lembro de arranjar maneira de ler o relogio do PC mas ja não me lembro do código! Tenho que ver se encontro o source code do meu projecto de Introdução à Programação!

yep, isso sei , ta aqui como exemplo
http://www.cplusplus.com/reference/clibrary/ctime/strftime.html

Boas, recebe do stdin por defeito. Usa a função sscanf. Algo do género:

Código:
[SIZE=2]sscanf(buffer, "%d-%d-%d"[/SIZE][SIZE=2], &data.dia, &data.mes, &data.ano);[/SIZE]
O formato da string tem de ser exactamente "dia-mês-ano", e não "Now is dia-mês-ano".

Podes também usar o strtok e atoi como o CoolMaster referiu, mas penso que com o sscanf é mais prático.
a string apenas tem dia-mes-ano , vou entao testar com o ssanf...
dp dou novidades
 
Para converteres de char* para int usas o atoi()
resolvi com o atoi()

tipo:
Código:
struct Data
{
  int dia, mes, ano;
}
Depois com o strftime, lia o dia, mes, i ano para uma string s_dia, s_mes, s_ano respectivamente
depois usava o atoi() para

Data.dia = atoi(s_dia)
obrigado

abraço
 
Back
Topo