chengwang1997 2021-11-26 10:06 采纳率: 100%
浏览 25
已结题

文件写入问题,q指针指向内容无变化

从文件随机读入数据1,3,5,写到p指针中,但是p指向内容始终没变

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct student
{
    int num;
    string name;
};
int main()
{
    student stu[5] = { 1000,"wang",1001,"ling",1002,"zhang",1003,"zhao",1004,"cheng" };
    fstream file("stu.dat", ios::in | ios::out | ios::binary);
    for (int i = 0; i < 5; i++)
    {
        file.write((char*)&stu[i], sizeof(stu[0]));
    }
    file.seekg(ios::beg);
    void* p;
    p= &stu[0];
    student* q = &stu[1];
    for (int i = 0; i < 5; i=i+2)
    {
        file.seekg( i * sizeof(stu[0]),ios::beg);
        file.read((char*)p, sizeof(stu[0]));
        file.read((char*)&stu[i], sizeof(stu[0]));
        q = (student*)p;
        cout << q->num << '\t' << q->name << endl;
        cout << stu[i].num << '\t' << stu[i].name << endl;
    }
    file.close();
    system("pause");
    return 0;
}

运行结果
1000    wang
1000    wang
1000    wang
1002    zhang
1000    wang
1004    cheng

  • 写回答

1条回答 默认 最新

  • 关注

    你检查一下你的文件写成功了吗。。。。检查了半天代码,发现是文件根本就没有成功创建。
    第13行后面添加如下代码判断文件是否成功创建:

    fstream file("stu.dat", ios::in | ios::out | ios::binary);  //在这一行后面添加如下代码:
        //判断文件是否成功打开
        if (!file.is_open())
        {
            cout << "file cannot open"<<endl;
            system("pause");
            return 0;
        }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月4日
  • 已采纳回答 11月26日
  • 创建了问题 11月26日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助