我需要编写一个从文件中读取并将其更新为结构成员的程序

时间:2014-04-24 05:01:06

标签: c

我已经提供了应该阅读的文件。当它遇到*符号时,它应该与结构的下一个成员一起更新。输入文件在下面提供。

*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);



}

2 个答案:

答案 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;
}