#include<stdio.h>
#include<stdlib.h>
typedef struct
{
long ID,Class,Date;
char Name[20];
char gender[20];
int chinese,math,english,total;
}student;
student s[2000];
int num=0;
void add()
{
char ch,k[80];
FILE *fp;
fp=fopen("sudent.txt","a+");
if(!fp)
{
printf("file connot be opened");
exit(1);
}
printf("輸入學生資料\n");
while(1)
{
printf("學號\n");
gets(k);
s[num].ID=atol(k);
printf("姓名\n");
gets(s[num].Name);
printf("性別\n");
gets(s[num].gender);
printf("班級\n");
gets(k);
s[num].Class=atol(k);
num++;
fwrite(&s[num],sizeof(s),num,fp);
printf("another(y/n)?");
ch=getchar();
if(ch=='n')
break;
gets(k);
fflush(stdin);
}
fclose(fp);
}
void main()
{
add();
}
uj5u.com熱心網友回復:
num++;fwrite(&s[num],sizeof(s),num,fp);
應該
fwrite(&s[num],sizeof(s),num,fp);
num++;
吧
uj5u.com熱心網友回復:
貌似沒有作用uj5u.com熱心網友回復:
每次錄入前資料有沒有清空?你申請的
char Name[20];
char gender[20];
只有20個資料區域,
如果不清空,錄入幾次就會超過20的區域范圍
uj5u.com熱心網友回復:
你自己Debug單步除錯一下看看,各個引數的值是否正確?uj5u.com熱心網友回復:
typedef struct
{
long ID,Class,Date;
char Name[20];
char gender[20];
int chinese,math,english,total;
}student;
student s[2000];
int num=0;
void add()
{
char ch,k[80];
FILE *fp;
fp=fopen("sudent.txt","a+");
if(!fp)
{
printf("file connot be opened");
exit(1);
}
printf("輸入學生資料\n");
while(1)
{
printf("學號\n");
gets(k);
s[num].ID=atol(k);
printf("姓名\n");
gets(s[num].Name);
printf("性別\n");
gets(s[num].gender);
printf("班級\n");
gets(k);
s[num].Class=atol(k);
fwrite(&s[num],sizeof(student),num,fp);
num++;
printf("another(y/n)?");
ch=getchar();
if(ch=='n') break;
fflush(stdin);
}
fclose(fp);
}
void main()
{
add();
}
注意
fwrite(&s[num],sizeof(student),num,fp);
num++;
uj5u.com熱心網友回復:
int len=sizeof(s);// 136000len=sizeof(student);// 68
道理上
fwrite(&s[num],sizeof(s),num+1,fp);
只有 num ==0
uj5u.com熱心網友回復:
才 不溢位 !轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/112524.html
標籤:基礎類
上一篇:關于結構體位元組對齊的問題
