qq_43109395 2018-12-13 18:51 采纳率: 100%
浏览 3315

Devc++编译器中用c写文件存取为什么打开文件为乱码?

//首先我写了学生信息管理系统的添加数据函数,需要将数据保存在磁盘里,将数据写入文件那一块用的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);
}


求解,很想知道为什么

  • 写回答

1条回答 默认 最新

  • devmiao 2018-12-14 06:38
    关注
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!