1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

duvida com datas em c

Discussão em 'Programação' iniciada por snis, 31 de Agosto de 2007. (Respostas: 10; Visualizações: 787)

  1. snis

    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
     
  2. snis

    snis Power Member

    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?
     
  3. CoolMaster

    CoolMaster Power Member

    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.
     
  4. Código:
    scanf("%d-%d-%d", data->dia, data->mes, data->ano);
     
  5. snis

    snis Power Member

    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?
     
  6. snis

    snis Power Member

    esse scanf recebe d onde? input? eu queria os dados da string..
     
  7. CoolMaster

    CoolMaster Power Member

    Para converteres de char* para int usas o atoi()
     
  8. AliFromCairo

    AliFromCairo Power Member

    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.
     
  9. petersaints

    petersaints Power Member

    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!
     
  10. snis

    snis Power Member

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

    a string apenas tem dia-mes-ano , vou entao testar com o ssanf...
    dp dou novidades
     
  11. snis

    snis Power Member

    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
     

Partilhar esta Página