まだ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];
これが私のファイルから構造体の配列に読み戻す私のloadメソッドです:
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");
}
}