• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JoBlack

[Dúvida] Funções 'getdate' e 'gettime'

3 mensagens neste tópico

Olá a todos

Tenho algumas dúvidas em relação a estas funções e o livro do Luis Damas não tem lá nada acerca delas.

Implementei o código seguinte para tentar obter o ano e colocá-lo num ficheiro de texto

#include <dos.h>     /* Funcoes  getdate e gettime */
#define FICH4 "Historico.txt"  /* Ficheiro  com os dados do historico */

void Inic4() /* 
              Verifica se o Ficheiro ja existe. Se nao existir cria-o.
             Se ja existir, abre-o em Modo de Leitura e Escrita (r+)
            */

{
  fp4=fopen(FICH4,"r+"); /* Tentar Abrir */
  if (fp4==NULL)
   {
    fp4 =fopen(FICH4,"w+");   /* Criar o Ficheiro */
    if (fp4==NULL)
      {
       fprintf(stderr,"ERRO FATAL: Impossível Criar o Ficheiro\n");
       getchar();
       exit(1);
      }
   }
}



void Escreve_hist()
{
struct date d; /*cria a estrutura de tipo definido (date) "d" */
getdate(&d); /* captura a data do sistema */
Inic4();
fprintf(fp4, "ano: %d",d.da_year);
fclose(fp4);
}

A intenção era fazer um histórico onde, entre outros dados, queria colocar a data e hora em que esses dados foram acedidos, por isso este pedaço de código era somente para testar a função getdate(). No entanto nem me cria o ficheiro  e dá-me um erro de compilação:

"storage size of `d' isn't known"

Podem ajudar-me s.f.f.?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Primeiro tens de dizer o que é o fp4 ao compilador, ou seja, isto:

FILE *fp4;

Segundo, como tens duas funções onde usas o fp4, então tens de passar a variável dum lado para o outro. Como a inicialização é feita por uma função externa, então o fp4 é passado com o return.

Outra coisa, tú só podes usar o open uma vez para um ficheiro, por isso, logo na abertura dizes o que queres.

Pelo o que vi, acho que estás interessado neste tipo de abertura:

Open a file for reading and appending. All writing operations are done at the end of the file protecting the previous content to be overwritten. You can reposition (fseek, rewind) the pointer to anywhere in the file for reading, but writing operations will move back to the end of file. The file is created if it doesn't exist.

Ou seja, fica assim:

#include <dos.h>     /* Funcoes  getdate e gettime */
#include <stdio.h>	 /* para o IN/OUTPUT*/
#include <stdlib.h>  /* para o exit*/
#define FICH4 "Historico.txt"  /* Ficheiro  com os dados do historico */

FILE* Inic4() /* 
              Verifica se o Ficheiro ja existe. Se nao existir cria-o.
             Se ja existir, abre-o em Modo de Leitura e Escrita (r+)
            */

{
FILE *fp4;

  fp4=fopen(FICH4,"a+"); /* Abre o ficheiro */
  if (fp4==NULL)
   {

       fprintf(stderr,"ERRO FATAL: Impossível Criar o Ficheiro\n");
       getchar();
       exit(1);
   }
   return fp4;
}



void main()/*Escreve_hist()*/
{
/*struct date d; cria a estrutura de tipo definido (date) "d" */
FILE *fp4;
/*getdate(&d);  captura a data do sistema */
fp4=Inic4();
fprintf(fp4, "ano: %d\n",12);/*d.da_year);*/
fclose(fp4);
}

Agora sobre as funções do tempo, não sei.

Cumpr. brink@ero    :ipool:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado, mas preciso de mais qquer coisa sobre as funções getdate() e gettime().

Para além disso quando coloco a  'struct date d;' mesmo com a bib dos.h obtenho sempre um erro de compilação...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora