It's a simple code, should run fine, i read something online about the error and it's about memory handling, can someone find the error and explain me why?
You see i just don't know enough of programming to know what's wrong here so any help would be very appreciated, thanks guys, i'll still keep looking at the program.
#include <time.h> /* para calcular data e duracao */
#include <stdio.h>
#include <string.h>
typedef struct relatorioDeChegada
{
int codCorredor;
char nomeCorredor[40];
struct tm t;/* duracao da corrida e data também*/
}relatorio;
int main(void)
{
int i , choice;
FILE *fp1;
relatorio relatorio;
int recsize;
char c;
fp1 = fopen("relatorio.dat" , "r+");
if(fp1 == NULL)
{
fp1 = fopen("relatorio.dat" , "w+");
if(fp1 == NULL)
{
printf("error in opening file : \n");
return -1;
}
}
recsize = sizeof(relatorio);
fseek(fp1 , 0 ,SEEK_END);
printf("Digite o nome do corredor ");
scanf("%[^\n]%*c" ,&relatorio.nomeCorredor);
printf("Digite o codigo do corredor");
scanf("%d" , &relatorio.codCorredor);
printf("\n Digite o dia da corrida");
scanf("%d" , &relatorio.t.tm_yday);
printf("\n Digite o mes da corrida");
scanf("%d" , &relatorio.t.tm_mon);
printf("\n Digite o ano da corrida");
scanf("%d" , &relatorio.t.tm_year);
printf("\n Digite a duracao da corrida em horas");
scanf("%d" , &relatorio.t.tm_hour);
printf("\n Digite a duracao da corrida em minutos");
scanf("%d" , &relatorio.t.tm_min);
printf("\n Digite a duracao da corrida em segundos");
scanf("%d" , &relatorio.t.tm_sec);
fwrite(&relatorio,recsize,1,fp1);
fclose(fp);
}