C语言高手帮忙

风隐若现 2012-03-04 11:10:06
如何在文件中保存读取结构体数组
假设数组为struct student A[10]
怎么用 高手帮帮忙
用代码些追加20分 谢谢
...全文
185 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
矫情狗_____ 2012-03-04
  • 打赏
  • 举报
回复
#include <stdio.h>

struct student
{
int num;
char name[20];
/*需要什么元素自己加*/
}A[10];
int main()
{
int i;
for(i=0; i < 10; i++) //输入10次!
{
printf("input numbers: ");
scanf("%d", &A[i].num);
printf("input name: ");
scanf("%s", &A[i].name);
}
printf("Number\t\tName\n");
for(i=0; i < 10; i++)
{
printf("%d\t\t%s\n", A[i].num, A[i].name);
}
}
面包大师 2012-03-04
  • 打赏
  • 举报
回复
#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
#include<cstdlib>
using namespace std;

struct student
{
char name[16];
int age;
//后边可以根据需要添加
};

int main()
{
struct student A[2] = {{"aaaa",16}, {"bbbbb",17}};
ofstream outT("d:\\student.dat",ios::out);
if(outT)
{
for(int i=0;i<2;i++)
{
outT.seekp(i*sizeof(student));
outT.write(reinterpret_cast<const char*>(&A[i]),sizeof(student));
}
outT.close();
}
fstream inT("d:\\student.dat",ios::in);
if(!inT)
{
cerr<<"文件不存在!\n-------->新建文件\n";
}
else
{
struct student B[2];
memset(B, 0, sizeof(B));
for(int i=0;i<2;i++)
{
inT.seekg(i*sizeof(student));
inT.read(reinterpret_cast<char *>(&B[i]),sizeof(student));
cout<<B[i].name<<endl;
cout<<B[i].age<<endl;
}
inT.close();
}
return 0;
}

楼主参考下
东莞某某某 2012-03-04
  • 打赏
  • 举报
回复
//写
for(int i=0; i<10 ; ++i)
fwrite(&A[i],sizeof(A[i]),1,fp);


//读
for(int i=0; i<10 ; ++i)
fread(&A[i],sizeof(A[i]),1,fp);
风隐若现 2012-03-04
  • 打赏
  • 举报
回复
谢谢大家
五个人写代码每人10分
矫情狗_____ 2012-03-04
  • 打赏
  • 举报
回复
/*没注意看是保存在文件,重写了一个*/
#include <stdio.h>

struct Aent
{
char name[20];
int age;
int num;
int score;
}A[4];

void save();
void load();

void main()
{
int i;
for(i=0; i < 4; i++)
{
printf("Input Name: ");
scanf("%s", &A[i].name);
printf("Input Age: ");
scanf("%d", &A[i].age);
printf("Input Num: ");
scanf("%d", &A[i].num);
printf("Input Score: ");
scanf("%d", &A[i].score);
}
save();
load();
printf("\tName\tAge\tNum\tScore\n");
for(i=0; i < 4; i++)
{
printf("\t%s\t%d\t%d\t%d\n", A[i].name, A[i].age, A[i].num, A[i].score);
}
}

void save()
{
FILE *file;
int i;

file = fopen("D:\stu-list", "wb");
for(i=0; i < 4; i++)
{
fwrite(&A[i], sizeof(struct Aent), 1, file);
}
fclose(file);
}

void load()
{
FILE *fp;
int i;
fp = fopen("D:\stu-list", "r");
for(i=0; i < 4; i++)
{
fread(&A[i], sizeof(struct Aent), 1, fp);
}
fclose(fp);
}
飞天御剑流 2012-03-04
  • 打赏
  • 举报
回复
结构体是不能整个对象直接写入文件的,因为写入和读取环境的对齐系数可能不同。

要么逐个成员写入,要么写入和读取时临时将对齐系数改为1。
Furney 2012-03-04
  • 打赏
  • 举报
回复
2楼回答很完美
Yvandev 2012-03-04
  • 打赏
  • 举报
回复
搞iphone的飘过。。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧