仍然是一个阵列真正的新C,但开始得到了它的窍门....读入文件到结构用C
我的程序应该从一个数组创建/写文件和存储信息的结构。那部分很好。有什么用是从文件中读取回结构的空数组麻烦IM ....
这里是我的结构:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 100
struct Video {
char name[1024]; //name
int ranking; // Number of viewer hits
char url[1024]; // YouTube URL
};
struct Video Collection[MAX];
这里是我的加载方法,从我的文件读取回到我的数组结构:
void load()
{
FILE *fileName;
fileName = fopen("ranking.dbm", "rb");
if (fileName != NULL){
fread (Collection,1,1,fileName);
}
else {
printf("ERROR");
}
}
也在这里是我写的方法:
void save()
{
FILE * pFile;
pFile = fopen ("Ranking.dbm" , "wb");
fwrite (Collection, 1 , sizeof(Collection), pFile);
fclose (pFile);
}
浩wever当我打印出我的阵列collection
后加载....其空...即使我可以看到我的文件在项目文件夹中,并打开它,并验证数据在那里....
上午我正确认为我不需要缓冲区,因为在使用它之前我不需要做任何处理。
也因为我已经静态分配空间的内存....我是否正确认为我可以直接读入数组?
这里是我的打印代码:
void printall()
{
int i;
printf("\nCollections: \n");
for(i = 0; i < tail; i++)
{
printf("\nVideo Name: %s", Collection[i].name);
printf("\nRanking (Hits): %d", Collection[i].ranking);
printf("\nURL: %s", Collection[i].url);
printf("\n");
}
}
你能仔细检查你的来源吗?在Video结构和Collection的声明之间,我认为缺少一些东西。 –
你想要文件是二进制还是文本形式?你关心不同架构上数据文件的可移植性吗? –
我想你想定义:'结构视频集合[MAX];' – slashmais