C中的文件写入和结构数组

时间:2016-03-25 13:31:27

标签: c arrays struct typedef fwrite

包括,

#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];

任何帮助都将非常感谢,提前感谢

0 个答案:

没有答案