forestelk 2018-12-06 15:39 采纳率: 50%
浏览 571

求大佬帮忙看看谢谢感激不尽

#include <fstream>
#include<iostream>
using namespace std;

struct Student          // 学生结构
{
    int num;        // 学号
    char name[16];      // 姓名
    float score1;
    float score2;
    float score3;    // 成绩
};

int main(void)          // 主函数main()
{
#pragma region (0)将它们存储在磁盘文件中;
    Student stu[3] = { {2009101, "李靖", 98,89,56}, {2009102, "刘敏", 100,23,25},{2009103, "王强", 99,56,89} };   // 定义数组

    fstream f("stu.dat", ios::out | ios::binary);// 定义文件对象,这样如果文件不存储将建立一个空文件
    if (f.fail())        // 打开文件失败
    {
        cout << "打开文件失败!" << endl;
        exit(1);        // 退出程序
    }
    for (int i = 0; i < 3; i++)
        f.write((char *)&stu[i], sizeof(stu));// 写数据到文件中
    f.seekp(0 * sizeof(Student), ios::beg);  // 定位于第1个学生数据的起始位置
    for (int i = 0; i < 3; i++)
    {
        cout << stu[i].name << " " << stu[i].name << " " << stu[i].score1 << " " << stu[i].score2 << " " << stu[i].score3
            << endl;    // 显示学生信息
    }
    system("pause");
    cout << endl;
    f.close();// 关闭文件

为什么从记事本打开就是乱码啊,notepad也是。

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-12-06 15:43
    关注

    乱码很正常,因为你是二进制方式写入的文件。
    比如你的score,98,存储的并非ascii的'9'和'8',而是一个浮点数,所以记事本打开看到的是乱码。

    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配