注册 登录
编程论坛 C++教室

如何将结构体转化成二进制形式写入文件? 用API的WriteFile函数

无名可用 发布于 2011-06-17 11:43, 3147 次点击
如题 ,操作系统的作业,在网上搜了好长时间也没搜到,在这里请教一下
程序代码:
struct Student {
    char name[10];
    char age[3];
    char score[4];
};
bool WriteFile( void )
{
    // 输入三个学生信息
    printf( "输入三个学生信息" );
    printf( "姓名\t年龄\t成绩\n" );
    int stuNum = 3;
    Student* stu = new Student[stuNum];
    for( int i = 0; i < stuNum; ++ i ) {
        cin >> stu[i].name >> stu[i].age >> stu[i].score;
    }

    // 写入file 1
    DWORD dwResult;
    for( int i = 0; i < stuNum; ++ i ) {
        if(!WriteFile (hFile[0],  , strlen(Student), &dwResult, NULL))  /* 不知如何将结构体转化成二进制 */
        {
            printf("Could not write to file (error %d)\n", GetLastError());
            delete [] stu;
            return false;
        }
    }
    delete [] stu;
    return true;
}
3 回复
#2
rjsp2011-06-18 11:11
差不多是
程序代码:
bool MyWriteFile( void )
{
    // 输入三个学生信息
    printf( "输入三个学生信息" );
    printf( "姓名\t年龄\t成绩\n" );
    int stuNum = 3;
    Student* stu = new Student[stuNum];
    for( int i=0; i<stuNum; ++i ) {
        cin >> stu[i].name >> stu[i].age >> stu[i].score;
    }

    // 写入file 1
    DWORD dwResult=0;
    if( !WriteFile(hFile[0],stu,stuNum*sizeof(stu[0]),&dwResult,NULL) || stuNum*sizeof(stu[0])!=dwResult )
        printf("Could not write to file (error %d)\n", GetLastError());

    delete[] stu;
    return stuNum*sizeof(stu[0])!=dwResult;
}

#3
szgg5202011-06-18 14:13
二楼正解...
#4
无名可用2011-06-20 08:16
谢谢
1