将数据从文件读入结构数组

时间:2013-04-13 06:33:09

标签: c file structure

您好我正在尝试将文件中的数据读入我尝试使用fgets的结构数组但是得到错误说RECORD类型无法转换为char *这是我到目前为止所拥有的

#include <stdio.h>
#include <stdlib.h>

#define MAX_NAME   20
#define FILE_NAME  50
#define LIST_SIZE 50
//void getData(RECORD name[], RECORD score)


typedef struct RECORD
{
    char *name;
    float  score;
}RECORD;


int main (void)
{
    // Declarations
       FILE *fp;
       char fileName[FILE_NAME];
       RECORD list[LIST_SIZE];
       int count = 0;
    // Statements
       printf("Enter the file name: ");
       gets(fileName);

       fp = fopen(fileName, "r");

       if(fp == NULL)
           printf("Error cannot open the file!\n");
         while (fgets(list[count], LIST_SIZE, fp) != NULL)
         {
             count++;
         }
       return 0;
}

错误发生在while循环中的fgets语句中,我该如何解决这个问题并将数据读入结构数组?

提前谢谢

2 个答案:

答案 0 :(得分:0)

试试这个,

while(fgets((char *)list[count], SIZE/* data size to be read */, fp) != NULL)
{...}

答案 1 :(得分:0)

fgets用于将文本文件中的字符串作为一个单元输入一行。

e.g。)

char input_line_buff[128];
fgets(input_line_buff, 128, fp);

读入

input_line_buff :(内容例如)“name 66.6 \ n”

你做拆分,内存分配和复制,转换。

e.g。)

list[count].name = strdup("name");
list[count].score= atof("66.6");
count++;