我已经提供了应该阅读的文件。当它遇到*
符号时,它应该与结构的下一个成员一起更新。输入文件在下面提供。
*1234567890*2223334445*santoshkumar.c.*5/13,bangalore,karnataka*
0987654321*6665554447*nirmal*13/5,bangalore,karnataka*
#define N 5
struct data{
char userid[10];
char cardid[10];
char name[30];
char address[100];
};
int main(){
struct data input[N];
FILE *fp;
fp=fopen("input.txt","r");
if(fp==NULL)
{
printf("file open failed \n");
return -1;
}
for(i=0;i<N;i++){
fscanf("%s*%s*%s*%s*%s",&input.userid[i],&input.cardid[i],&input.name[i],&input.address[i]);
}
for(i=0;i<N;i++){
printf("%s%s%s%s%s",input.userid[i],input.cardid[i],input.name[i],input.address[i]);
}
fclose(fp);
}
答案 0 :(得分:1)
更改声明
struct data{
char userid[11]; // +1 for NULL
char cardid[11];
char name[31];
char address[101];
};
struct data input[5]; //not record. below you used input.
并尝试这样
fscanf(fp, "%s*%s*%s*%s*%s",&input[i].userid, &input[i].cardid, &input[i].name, &input[i].address);
在fscanf
中,第一个参数是文件指针,即您要从哪个文件读取。
答案 1 :(得分:0)
样品
#include <stdio.h>
#define N 5
struct data{
char userid[10+1];
char cardid[10+1];
char name[30];
char address[100];
};
int main(){
char *dummy = "0987654321*6665554447*nirmal*13/5,bangalore,karnataka*";
struct data input[N];
int i=0;
sscanf(dummy, " %10[^*]*%10[^*]*%29[^*]*%99[^*]*", input[i].userid, input[i].cardid, input[i].name, input[i].address);
printf("%s %s %s %s\n",input[i].userid, input[i].cardid, input[i].name, input[i].address);
return 0;
}