应为“FILE *”,但参数类型为“char *”

Expected ‘FILE *’ but argument is of type ‘char *’

我有一个代码,其中我给出了一个最终将打开文件的 argv[1]:

int main(int argc, char** argv) {
  read(argv[1]);
}

问题是 .h 有以下错误,"error expected ‘FILE * {aka struct _IO_FILE *}’ but argument is of type ‘char *’"

这是.h:

#include <stdio.h>

struct node{
  int id;
  int *link_ids;
  int links;
  }; 

struct node *nodes;
void read(FILE * openedfile); 

问题是 argv[1] 将成为文件 (txt) 的名称。 Void read 将对文件进行所有操作。我也不能以任何方式修改 main.c 有人可以帮我解决我的错误吗?

argv[1] 是一个字符数组,您将它传递给需要 FILE* 参数的函数。

如果您只想将文件名作为函数的参数传递,则应该是:

void read(char * openedfile); 

如果除了文件指针分配之外的所有事情都由 read() 完成,您应该这样做:

 int main(int argc, char** argv) {

        FILE *fp;
        fp=fopen(argv[1], "r");
        read(fp);
        //..
    }