C言語の構造体のファイルへの書き込みについて
C言語を勉強しているものです。構造体を指定した番号の場所にファイルへ書き出し、その指定した番号の場所の構造体をファイルから読み込み表示というプログラムを作成したいのですが、うまくいかずどうしたらいいのかわかりません。説明不足ですがご教授お願いします。
ソフトはVisual C++ 2008 Express Editionを使ってます。
↓↓↓作成ソースコード↓↓↓
#include<stdio.h>
#include<stdlib.h>
struct S_data{
char Name[10+1];/*名前*/
int Sex;/*性別*/
int Height;/*身長*/
float Weight;/*体重*/
};
void main(){
FILE *Fp;
int pos;
int Ret;
struct S_data tag;
memset(&tag,'\0',sizeof(tag));
Fp=fopen("aaa.dat","r+b");
if(Fp==NULL){
Fp=fopen("aaa.dat","w+b");
if(Fp==NULL){
printf("File not open\n");
exit(2);
}
}
while(1){
scanf("%d",&pos); /*番号の入力*/
if (pos==0) break;
scanf("%s",tag.Name);/*名前*/
scanf("%d",&tag.Sex);/*性別*/
scanf("%d",&tag.Height);/*身長*/
scanf("%d",&tag.Weight);/*体重*/
fseek(Fp,sizeof(tag)*(pos),SEEK_SET);
fwrite(&tag,sizeof(tag),1,Fp);
memset(&tag,'\0',sizeof(tag));
}
while(1){
scanf("%d",&pos);
if (pos==0) break;
fseek(Fp,sizeof(tag)*(pos),SEEK_SET);
fread(&tag,sizeof(tag),1,Fp);
printf("%s\n",tag.Name);
printf("%d\n",&tag.Sex);
printf("%d\n",&tag.Height);
printf("%d\n",&tag.Weight);
memset(&tag,'\0',sizeof(tag));
}
Ret=fclose(Fp);
if (Ret!=0){
exit(2);
}
}