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();
}
}
帮忙写下读入函数 我自己写的总是一运行读入程序 整个程序就结束了
是要写一个函数 实现从文件读入数据到结构数组
以上是我程序保存数据的函数 展开
#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();
}
}
帮忙写下读入函数 我自己写的总是一运行读入程序 整个程序就结束了
是要写一个函数 实现从文件读入数据到结构数组
以上是我程序保存数据的函数 展开
展开全部
#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);
}
#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);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询