怎么实现文件输入数据,到结构体的数组指针中
结构体:typedefstructData{char(*name)[N];//记录30个学生的姓名int(*xuehao)[N];//记录30个学生的学号}文件中的数据:...
结构体:typedef struct Data
{ char (*name)[N]; //记录30个学生的姓名
int (*xuehao)[N]; //记录30个学生的学号}
文件中的数据:
zhaoyun 1
qianmiu 2
shunbing 3
libai 4
zhoucang 5
文件已经成功打开了,用fscanf输入//有错
for(i=0;i<4;i++)
{fscanf(fp,"%s",data->(name+i));
fscanf(fp,"%d",data->(xuehao+i));}
我觉得用指针数组方便点,但是fscanf似乎不能把值输到指针中去,只能输到数组中,因此用数组指针,但是数组指针的增量i应该怎么放呢? 展开
{ char (*name)[N]; //记录30个学生的姓名
int (*xuehao)[N]; //记录30个学生的学号}
文件中的数据:
zhaoyun 1
qianmiu 2
shunbing 3
libai 4
zhoucang 5
文件已经成功打开了,用fscanf输入//有错
for(i=0;i<4;i++)
{fscanf(fp,"%s",data->(name+i));
fscanf(fp,"%d",data->(xuehao+i));}
我觉得用指针数组方便点,但是fscanf似乎不能把值输到指针中去,只能输到数组中,因此用数组指针,但是数组指针的增量i应该怎么放呢? 展开
1个回答
展开全部
要用动态分配让指针变量有数据存放单元。
给你写完整了。
n=30; 给定了。你也可以用临时输入的方法,改变人数要求。
数据文件名也给定为 abc.txt .
#include<stdio.h>
#define N 16
typedef struct Data
{
char (*name)[N];
int *xuehao;
} DT;
main()
{
DT data;
int i,n=30;
FILE *fp;
data.xuehao=(int *) malloc(sizeof(int)*n); //动态分配
data.name = (char (*)[N]) malloc( sizeof(char) * n); //动态分配
fp = fopen("abc.txt","r");
for(i=0;i<n;i++){
fscanf(fp,"%s", data.name[i]);
fscanf(fp,"%d", &data.xuehao[i]);
}
fclose(fp);
for(i=0;i<n;i++){
printf("%s %d\n",data.name[i], data.xuehao[i]);
}
}
============
若喜欢指针形式,你写指针形式就是了:
fscanf(fp,"%s", data.name+i);
fscanf(fp,"%d", data.xuehao+i);
给你写完整了。
n=30; 给定了。你也可以用临时输入的方法,改变人数要求。
数据文件名也给定为 abc.txt .
#include<stdio.h>
#define N 16
typedef struct Data
{
char (*name)[N];
int *xuehao;
} DT;
main()
{
DT data;
int i,n=30;
FILE *fp;
data.xuehao=(int *) malloc(sizeof(int)*n); //动态分配
data.name = (char (*)[N]) malloc( sizeof(char) * n); //动态分配
fp = fopen("abc.txt","r");
for(i=0;i<n;i++){
fscanf(fp,"%s", data.name[i]);
fscanf(fp,"%d", &data.xuehao[i]);
}
fclose(fp);
for(i=0;i<n;i++){
printf("%s %d\n",data.name[i], data.xuehao[i]);
}
}
============
若喜欢指针形式,你写指针形式就是了:
fscanf(fp,"%s", data.name+i);
fscanf(fp,"%d", data.xuehao+i);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询