首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

fread读取结构体有关问题,已经注意内存对齐有关问题了

2013-11-05 
fread读取结构体问题,已经注意内存对齐问题了啊#include stdlib.h#include iostream#pragma pack(1)us

fread读取结构体问题,已经注意内存对齐问题了啊
#include <stdlib.h>
#include <iostream>
#pragma pack(1)
using namespace std;

typedef struct student
{
char name;
int num;
}student;

int main()
{
FILE *fp;
student stu;
if((fp=fopen("1.txt","rb"))==NULL)
cout<<"error!"<<endl;
fread(&stu,sizeof(stu),1,fp);
char name;
int num;
name=stu.name;
num=stu.num;
cout<<"name:"<<name<<endl;
cout<<"number:"<<num<<endl;

fclose(fp);

return 0;
}

已经注意了内存对齐问题了,为什么总是只能输出name值,而num总是随机数呢? 动输入的吧,不是在程序里面输入,所以就读不出来;
[解决办法]
1.txt的数据是如何写的。

引用:
#include <stdlib.h>
#include <iostream>
#pragma pack(1)
using namespace std;

typedef struct student
{
char name;
int num;
}student;

int main()
{
FILE *fp;
student stu;
if((fp=fopen("1.txt","rb"))==NULL)
cout<<"error!"<<endl;
fread(&stu,sizeof(stu),1,fp);
char name;
int num;
name=stu.name;
num=stu.num;
cout<<"name:"<<name<<endl;
cout<<"number:"<<num<<endl;

fclose(fp);

return 0;
}

已经注意了内存对齐问题了,为什么总是只能输出name值,而num总是随机数呢?

热点排行