#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();
}
#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();
}
解决方案 »
- SetScrollInfo()不正常工作 求教育
- 一个界面刷新问题
- 通过菜单打开一个模态对话框,怎么样在模态对话框中获得视类的指针?
- MEDIASUBTYPE_MPEG2_TRANSPORT应该用什么解码?从哪里下载?
- 怎么样在初始化对话框的时候指定对话框的位置?
- avi添加字幕问题
- 想做一个基于对话框的多线程程序,请问应该用模式对话框还是非模式对话框?
- vc和C++ Builder在开发方式上有什么不同!
- VCL,MFC,COM,ATL,COBRA这些到底有什么区别啊?未来的流行趋势是谁呢?
- 急!急!急!关于压缩算法的问题!!
- 如何在滚动视图中,始终显示滚动条
- 求指导关于vs2015运行时出现0xC0000005:读取位置0x00000004时发生访问冲突
fwrite(&s[num],sizeof(s),num,fp);应该
fwrite(&s[num],sizeof(s),num,fp);
num++;
吧
你申请的
char Name[20];
char gender[20];
只有20个数据区域,
如果不清空,录入几次就会超过20的区域范围
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++;
len=sizeof(student);// 68
道理上
fwrite(&s[num],sizeof(s),num+1,fp);
只有 num ==0