JoBlack Posted May 18, 2006 at 11:08 PM Report #28199 Posted May 18, 2006 at 11:08 PM 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
brink@ero Posted May 19, 2006 at 08:21 AM Report #28218 Posted May 19, 2006 at 08:21 AM 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 ?
JoBlack Posted May 21, 2006 at 03:04 PM Author Report #28617 Posted May 21, 2006 at 03:04 PM 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...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now