仍然是一個陣列真正的新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