Jump to content

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


Recommended Posts

Posted

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

Posted

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    ?

Posted

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.