对 C 语言仍然很陌生,但开始掌握它的窍门....
我的程序应该创建/写入文件并存储来自结构数组的信息。那部分很好。我遇到的问题是从该文件读回一个空的结构数组......
这是我的结构:
#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);
}
但是,当我在加载后打印出我的数组时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");
}
}