包括,
#include <time.h> /* para calcular data e duracao */
#include <sys/time.h> /* para duracao */
#include <stdio.h>
#include <string.h>/* para limpar a tela durante os menus */
#define FILENAME "RelatoriosClimaticos.bin"
#include <stdlib.h>
#include <ctype.h>
#include <unistd.h>
我有一个像这样定义的结构:
typedef struct RelatorioClimatico
{
char nomeLocal [50];
struct tm dataColeta;
int temperatura;
}RelatorioClimatico;
我有这个函数试图将随机值写入二进制文件:
void createRandomFilesByFileSize(FILE *fpp, long int requestedSize) //Opção 2
{
struct timeval tm_ini, tm_fim;
gettimeofday(&tm_ini, NULL);
long int x=0, registriesNeededForSize, registryBlock;
int y=0;
struct tm dataColeta;
int size = sizeof(RelatorioClimatico);
RelatorioClimatico *relatorioClimatico = malloc(sizeof(RelatorioClimatico) * 27849);
registriesNeededForSize = (int)(requestedSize/184);
registryBlock = (int)(requestedSize/184)/27849;
rewind(fpp);
while(x<registryBlock)
{
while(y<27849)
{
NameGen(relatorioClimatico[y].nomeLocal);
fflush(stdin);
relatorioClimatico[y].dataColeta = GeraData();
fflush(stdin);
relatorioClimatico[y].temperatura = rand() % 45;
fflush(stdin);
}
x++;
y=0;
fseek(fpp, size, SEEK_END);
fwrite(&relatorioClimatico, size*27849, 1, fpp);
x++;
}
rewind(fpp);
gettimeofday(&tm_fim, NULL);
double diff_sec = difftime(tm_fim.tv_sec, tm_ini.tv_sec);
double diff_milli = difftime(tm_fim.tv_usec, tm_ini.tv_usec)/1000000;
printf("Os %i relatorios foram gerados em %f segundos, e o arquivo resultando possui %ld bytes \n",registriesNeededForSize, diff_sec+diff_milli, ftell(fpp));
}
所以我无法做的是创建这个类型定义的RelatorioClimatico变量:
RelatorioClimatico *relatorioClimatico = malloc(sizeof(RelatorioClimatico) * 27849);
RelatorioClimatico是结构体,我希望它是一个包含27849个位置的数组。
我之前试过这个但它给了我一个错误:
RelatorioClimatico relatorioClimatico[27849];
任何帮助都将非常感谢,提前感谢