c语言如何使用结构体读取TXT文件并且输入序号输出对应内容?

c语言如何使用结构体读取TXT文件并且输入序号输出对应内容?RT,求求高手帮忙orz

#include <stdio.h>
#include <stdlib.h>
#define N 120

struct shangpin {
int xuhao;
char riqi[42];
char mingcheng[51];
float chengben;
int shoujia;
float lirun;
};

void readdata(struct shangpin a[],int *n,FILE *fp) {
int i = 0;
if(fp == NULL) {
printf("没有可供读取的数据文件。\n");
exit(2);
}
*n = 0;
while(!feof(fp) && i < N) {
fscanf(fp,"%d%s%s",&a[i].xuhao,a[i].riqi,a[i].mingcheng);
fscanf(fp,"%f%d%f",&a[i].chengben,&a[i].shoujia,&a[i].lirun);
++i;
++(*n);
}
}

void show(struct shangpin a[],int n) {
int i;
for(i = 0; i < n; ++i) {
printf("%d\t%s\t%s\t",a[i].xuhao,a[i].riqi,a[i].mingcheng);
printf("%.2f\t%d\t%.2f\n",a[i].chengben,a[i].shoujia,a[i].lirun);
}
}

int main() {
int n = 0;
FILE *fp;
struct shangpin a[N];
char datafile[] = "indata.txt";//假设的数据文件名
if((fp = fopen(datafile,"rt")) == NULL) {
printf("无法打开数据文件:%s\n",datafile);
exit(3);
}
readdata(a,&n,fp);
show(a,n);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-23
#include
#include
#define NEW (TX *)malloc(sizeof(TX))
typedef struct tongxunlu //定义的一个通讯录的结构体
{
char number[10]; //号码
char name[20]; //姓名
int old; //年龄
char address[20]; //地址
char phone[12]; //电话
struct tongxunlu *next;//链表
}TX;
int main ()
{
FILE *fp; // 文件指针fp
TX *p;
int i,n; // i,n控制循环
if((fp = fopen("学生信息.txt","w")) == NULL ) // 打开文件
{
printf(" 人品 不够!!启动失败!!!\n");
exit(0);
}
printf("输入人数:"); // 键盘输入人数n
scanf("%d",&n);
fprintf(fp,"%d",n); // 将人数n写入文件
fprintf(fp,"\n");
p = NEW; // 开辟一个新内存,并让指针p指向它
printf(" 输入档案号、姓名、年龄、籍贯、联系电话\n");
for(i = 0; n > i ; i++) // 反复用同一个节点进行n次循环
{
scanf("%s",&p -> number); // 键盘将数据写入该节点
scanf("%s",&p -> name);
scanf("%d",&p -> old);
scanf("%s",&p -> address);
scanf("%s",&p -> phone);
fprintf(fp,"%s ",p -> number); // 将该节点内的数据写入文件
fprintf(fp,"%s ",p -> name);
fprintf(fp,"%d ",p -> old);
fprintf(fp,"%s ",p -> address);
fprintf(fp,"%s ",p -> phone);
fprintf(fp,"\n");
}
free(p); // 释放p内存
fclose(fp); // 关闭文件
printf("\n\n数据输入完成\n");
}
相似回答