【问题标题】:Expected ‘FILE *’ but argument is of type ‘char *’预期为“FILE *”,但参数的类型为“char *”
【发布时间】:2020-07-31 14:27:58
【问题描述】:

我有一个代码,我给出了一个 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] 将成为 FILE (txt) 的名称。无效读取是对文件执行所有操作的方法。我也不能以任何方式修改 main.c 有人可以帮我解决我的错误吗?

【问题讨论】:

  • 您误解了有关如何读取文件的概念。如果要从命令行的参数中获取文件路径。 This can help.
  • 不,我的函数 read 是对文件执行所有操作的函数,实际上它正在工作。问题是 argv[1] 将成为文件的名称。

标签: c file header char argv


【解决方案1】:

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

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

void read(char * openedfile); 

【讨论】:

  • 谢谢!!但我不能以任何方式修改 main.c
  • @Cipher,我编辑了问题以解决您的评论。
【解决方案2】:

如果除了文件指针分配之外的一切都由read() 完成,你应该这样做:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    相关资源
    最近更新 更多