C语言 结构体数据读入问题

这是结构体的定义以及保存到文件的函数#defineMAXWORDS41#defineMAXDES501#defineMAXENTRY100FILE*fp;structdi... 这是结构体的定义 以及保存到文件的函数
#define MAXWORDS 41
#define MAXDES 501
#define MAXENTRY 100
FILE *fp;
struct dic
{
int number;
char word[MAXWORDS];
char des[MAXDES];
} entry[MAXENTRY];
void save()
{
int n;
char filename[15];
system("cls");
printf ("请输入文件名字*.txt/*.doc(字符长度不超过8):");
while (scanf ("%s",filename) != 1 && strlen(filename) > 15)
{
system("cls");
printf ("请输入文件的名字*.txt/*.doc(字符长度不超过8):");
}
if ((fp=fopen(filename,"w+"))!= NULL)
{
printf ("文件建立成功.\n");
for (n = 0;n <= last;n++){
if(fwrite(&entry[n],sizeof(struct dic),1,fp)!=1)
{
printf("文件不能写!\n");
exit(0);
}
printf("\n");
}
if (fclose(fp) !=0)
printf ("关闭错误\n");
else
{ printf ("完成!\n");
}
}
else
{
printf ("不能建立文件,请按回车键退出.\n");
getchar();
}
}
帮忙写下读入函数 我自己写的总是一运行读入程序 整个程序就结束了
是要写一个函数 实现从文件读入数据到结构数组
以上是我程序保存数据的函数
展开
 我来答
半季流年
2010-10-28 · TA获得超过1533个赞
知道小有建树答主
回答量:616
采纳率:0%
帮助的人:775万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXWORDS 41
#define MAXDES 501
#define MAXENTRY 100
FILE *fp;
char filename[15];//把这个存放文件名的数组也定义成全局的,否则你读文件时就不知道文件名了
struct dic
{
int number;
char word[MAXWORDS];
char des[MAXDES];
} entry[MAXENTRY];
void save()
{
int n,last=0;//定义变量last
system("cls");
printf ("请输入文件名字*.txt/*.doc(字符长度不超过8):");
while (scanf ("%s",filename) != 1 && strlen(filename) > 15)
{
system("cls");
last++;
printf ("请输入文件的名字*.txt/*.doc(字符长度不超过8):");
}
if ((fp=fopen(filename,"w+"))!= NULL)
{
printf ("文件建立成功.\n");
for (n = 0;n <= last;n++){
if(fwrite(&entry[n],sizeof(struct dic),1,fp)!=1)
{
printf("文件不能写!\n");
exit(0);
}
printf("\n");
}
if (fclose(fp) !=0)
printf ("关闭错误\n");
else
{ printf ("完成!\n");
}
}
else
{
printf ("不能建立文件,请按回车键退出.\n");
getchar();
}
}
void read()
{
int i=0;
if((fp=fopen(filename,"r"))==NULL){
printf("打开文件失败!\n");
system("pause");
exit(1);
}
while(!feof(fp)){
if(fread(&entry[i++],sizeof(struct dic),1,fp)!=1)
{
printf("文件不能读!\n");
exit(1);
}
}
}
void main()
{
save();
read();
}
补充回答;
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXWORDS 41
#define MAXDES 501
#define MAXENTRY 100

struct dic
{
int number;
char word[MAXWORDS];
char des[MAXDES];
} entry[MAXENTRY];
void savefile(char *file,int last)
{
int n;
FILE *fp;
if ((fp=fopen(file,"w+"))!= NULL)
{
printf ("文件建立成功.\n");
for (n = 0;n <= last;n++){
if(fwrite(&entry[n],sizeof(struct dic),1,fp)!=1)
{
printf("文件不能写!\n");
exit(0);
}
printf("\n");
}
if (fclose(fp) !=0)
printf ("关闭错误\n");
else
{ printf ("完成!\n");
}
}
else
{
printf ("不能建立文件,请按回车键退出.\n");
getchar();
}
}
void readfile(char *file)
{
int i=0;
FILE*fp;
if((fp=fopen(file,"r"))==NULL){
printf("打开文件失败!\n");
system("pause");
exit(1);
}
while(!feof(fp)){
if(fread(&entry[i++],sizeof(struct dic),1,fp)!=1)
{
printf("文件不能读!\n");
exit(1);
}
}
}
void main()
{
int last=0;
char filename[20];
system("cls");
printf ("请输入文件名字*.txt/*.doc(字符长度不超过8):");
while (scanf ("%s",filename) != 1 && strlen(filename) > 15)
{
system("cls");
last++;
printf ("请输入文件的名字*.txt/*.doc(字符长度不超过8):");
}
savefile(filename,last);
readfile(filename);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式