在C中导入文件内容到结构体中



这是一个简单的函数,我是为了学习如何将数据从文件复制到结构体。

#include <stdio.h>
#include <stdlib.h>
#define FILENAME "studentlist.txt"
struct node {
    char *name[20];
    int age;
    struct node *next;
};
typedef struct node Node;
int main(){
    Node *p,*head = malloc(sizeof(Node));
    Node **listPtr;
    *listPtr = head;
    p = head;
    int num;
    FILE *students;
    if ((students = fopen(FILENAME,"r")) == NULL)
            printf("Error: Cant open filen");
    else
    {
            num = fscanf("%i", &num);
            int i = 0;
            for (i = 0; i <= num; i++){
                    fscanf(students,"%s %i", p->name, p->age);
                    p = p->next;
                    p = malloc(sizeof(Node));
                    }
return 0;
}

我得到的错误与fscanf函数有关。我也得到

 expected 'struct FILE * __restrict__' but argument is of type 'char *'

我做错了什么?

您刚刚忘记了行中的FILE*

num = fscanf("%i", &num );

应该是

num = fscanf( students, "%i", &num );

你应该阅读整个错误。它告诉你哪一行,可能是哪个角色给你出了问题。他们告诉你问题所在,已经解决了90%的问题。

标准库函数fscanf的签名为

int fscanf(FILE *stream, const char *format, ...);

因此,下面的语句是错误的-

num = fscanf("%i", &num);

格式字符串字面值"%i"的计算结果是指向其第一个元素的指针,该元素的类型为char *。但是,fscanf需要FILE *类型的第一个参数。这解释了错误语句。将这一行替换为-

num = fscanf(students, "%i", &num);

相关内容

  • 没有找到相关文章

最新更新