预期为“ FILE *”,但参数的类型为“ char *”

时间:2020-04-18 00:06:16

标签: c file header char argv

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

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

问题是.h出现以下错误,“预期错误'FILE * {aka结构_IO_FILE *}”,但参数的类型为'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 有人可以帮助我解决我的错误吗?

2 个答案:

答案 0 :(得分:0)

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

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

void read(char * openedfile); 

答案 1 :(得分:0)

如果除文件指针分配外的所有工作均由 int main(int argc, char** argv) { FILE *fp; fp=fopen(argv[1], "r"); read(fp); //.. } 完成,则应执行以下操作:

    int index = 0;

    String first = "", last= "", initial= "";


    for ( int i = 0; i < name.length(); i++) {
        if (name.charAt(i) == ',') {
             last = name.substring(0,i);
             index = i+1;
          }
        else if(name.charAt(i) ==' ') {
            first = name.substring(index,i);    
        }
        else if(name.charAt(i) == '.') {
            initial = name.substring(i-1, i);
        }
    }

    return (first + " " +initial+ " " + last);
}