//首先我写了学生信息管理系统的添加数据函数,需要将数据保存在磁盘里,将数据写入文件那一块用的c语言,其他为c++,代码如下:
void Add()
{
char a='Y';
FILE *fp;
if((fp=fopen("informations.dat","w"))==NULL)
{
printf("无法打开此文件 !\n");
exit(0);
}
while(a=='Y')
{
//if()
Info in;
cout<<"请输入学生信息:"<<endl;
cin>>in.id>>in.name>>in.score>>in.order;
if(fwrite(&in,sizeof(struct Info),1,fp)!=1)
cout<<"file write error"<<endl;
cout<<"是否继续添加?(Y/N)";
cin>>a;
//printf("%s",in.id);
}
fclose(fp);
putchar(10);
}
//此时打开文件里是乱码,如下图
//另外写了一个只用来存文件的代码用来测试,打开就不是乱码,是正常数据。代码如下
#include<iostream>
using namespace std;
struct student
{
string name;
int grade;
};
int main()
{
FILE *fp;
student stu;
if((fp=fopen("information","w"))==NULL)
{
printf("无法打开此文件 !\n");
exit(0);
}
printf("请输入学号:");
scanf("%s",&stu.name);
printf("请输入成绩:");
scanf("%s",&stu.grade);
if(fwrite(&stu,sizeof(struct student),1,fp)!=1)
cout<<"file write error"<<endl;
fclose(fp);
putchar(10);
return 0;
}
//若是将add函数中的信息输入语句cin 用scanf替换则文件中存不进数据,代码如下
void Add()
{
char a='Y';
FILE *fp;
//ofstream file("info.xlsx",ios_base::in);
initial();
if((fp=fopen("informations.dat","w"))==NULL)
{
printf("无法打开此文件 !\n");
exit(0);
}
while(a=='Y')
{
//if()
Info in;
cout<<"请输入学生信息:"<<endl;
//cin>>in.id>>in.name>>in.score>>in.order;
scanf("%s",&in.id);
printf("请输入姓名:");
scanf("%s",&in.name);
printf("请输入成绩:");
scanf("%d",&in.score);
printf("请输入排名:");
scanf("%d",&in.order);
if(fwrite(&in,sizeof(struct Info),1,fp)!=1)
cout<<"file write error"<<endl;
cout<<"是否继续添加?(Y/N)";
cin>>a;
//printf("%s",in.id);
}
fclose(fp);
putchar(10);
}
求解,很想知道为什么