有没有办法确定一个struct数组应该有多少元素,或者为C中的struct数组分配动态内存?该代码打开一个二进制文件并将其读入结构数组。我可以放置一个像3000这样的任意值,但是当我去打印时,它会在文件结束后给出垃圾值。我正在寻找一种方法将我的数组设置为正在读取的文件的大小或将其限制为有用的数据。我想像malloc()这样的函数只是找不到具有静态结构数组的例子。
#include "function.h"
int main() {
FILE *fp; // file pointer
STRUCTNAME structVar[]; //typdef array of structs
fp = fopen("file.bin", "rb"); //binary file to read into array
if(fp == NULL) { // error check file opening
printf("error\n");
} else {
//while !feof to read file into array
while(!feof(fp)) {
fread(structVar, sizeof(structVar), 1, fp);
printStructData(structVar);
}
fclose(fp); // closes file
}
return 0;
}
答案 0 :(得分:0)
STRUCTNAME *structVar;
FILE* fp = fopen(...);
if(fp)
{
long fileSize;
fseek(fp, 0 , SEEK_END);
fileSize = ftell(fp);
fseek(fp, 0 , SEEK_SET);
structVar = malloc(sizeof(STRUCTNAME) * (fileSize / sizeof(STRUCTNAME) + 1)); //just in case if the file length is not exactly sizeof(STRUCTNAME) * n
...
fclose(fp);
}