Getting an error "error: expected expression before..." when I try to call a function with parameters in C

Getting an error "error: expected expression before..." when I try to call a function with parameters in C

我的代码如下:

FILE *test
char line[50];
fp = fopen(arg[5], "r");

doSomething(File test, char line[50]);  // declare function
doSomething(fp, line[50]); // call function

我在 'FILE' 错误之前收到“预期的错误表达式”。我已经尝试了许多不同的语法变体,但我仍然遇到这个错误,或者更多错误。我在调用函数时意识到,我只需要将参数放在同一范围内并预先声明函数,我认为我已经做到了。

我只是希望能够无错误地调用该函数。

doSomething(File test, char line[50]);

应该是

doSomething(File *test, char line[50]);

我看到函数 fopen() returns FILE * 并且您正在尝试将 return 值传递给您的函数 doSomething() 所以第一个参数应该类型为 FILE * 而不是 FILE

void doSomething( FILE *f,char a[])
{
  // Do your stuff
}

int main()
{
  char b[100] = "";
  FILE *fp = fopen("file","mode");
  doSomething(fp,b);
}

函数的声明应该是这样的

     doSomething(File *, char); 

您的代码中的问题是,如果没有前向声明,第一个 assummed 声明实际上被解释为函数调用 [函数的隐式声明]。在那里,File test 被解释为 实际参数 ,而不是参数。在那里,FILE 是保留关键字,而 File test 没有有效参数,将抛出错误。

在函数 声明 的代码中,将 th3 声明移到 main() 之外,请指定函数的 return 类型并更正第一个参数。

改变

 doSomething(File test, char line[50]);

 int doSomething(File * test, char line[50]);

注意:始终启用[并注意]编译器警告。启用警告后,您的编译器应该会向您显示警告

warning: implicit declaration of function

在这些情况下。

另外,调用错误。 line[50] 将引用数组后面的字符。将调用更改为:

doSomething(fp, line); // call function

当您在 C 中打开文件时,将返回指向文件开头的指针。这是您应该传递的内容,而不是实际文件。 右边是Gopi建议的。