Olá eu estou tendo um probleminha aq pra desenrolar um problema que é o seguinte:
Eu preciso dizer qnts dias existem entre duas datas q serão inseridas pelo usuario.
Sei, é que você não fez todas as transformações intermediárias.
Você primeiramente precisa converter sua string em um tempo (usualmente um struct tm). Você pode usar sscanf para isso.
A seguir, você converte essa struct tm em um time_t, usando normalmente localtime.
Depois, você pega os time_t do tempo inicial e final, e faz a diferença. Pode subtrair os valores mesmo, não precisa de difftime (que simplesmente pega a diferença de dois time_t e transforma em um double, fazendo um simples cast).
Isso vai dar um valor em segundos. Para transformar em dias, é só lembrar que 1 dia = 86400 segundos.
Mas é q sou iniciante em C então não entendi muito bem como a struct tm e o sscanf.
Agradeço se vc puder dar um exemplo em um programa.
E
entanglement
Ah, é pra já. (Esqueci que era para usar mktime, não localtime. Olhe sempre a documentação! )
#include <stdio.h>#include <stdlib.h>#include <time.h>time_tconverter(constchar*ddMMaaaa){structtmt;/*zerandotodososcampos*/memset(&t,0,sizeof(t));/*Veja:http://www.cplusplus.com/reference/clibrary/ctime/tm/*/sscanf(ddMMaaaa,"%d/%d/%d",&t.tm_mday,&t.tm_mon,&t.tm_year);/*Precisamosfazerumacorrecao-osmesescomeçampor0eosanospor1900.*/t.tm_mon--;t.tm_year-=1900;/*Agoratemosdeconverterparatime_t*/returnmktime(&t);}intmain(intargc,char*argv[]){char*de=argv[1];char*ate=argv[2];time_tt1=converter(de);time_tt2=converter(ate);intsegundos=t2-t1;intdias=segundos/86400;printf("A diferenca entre %s e %s eh de %d dias\n",de,ate,dias);}
Fica a seu cargo descobrir como é que se compila e roda o programa.
A propósito, a diferença entre 25/08/2010 e 18/08/2010 é de 7 dias, não 8. Se quiser incluir mais um dia, esteja à vontade.