C function fopen(); error: too many arguments to the function

C function fopen(); error: too many arguments to the function

为什么我不能这样做?

fopen("%s",stringarray,fpointer);

上面的 returns 一个错误,说明函数的参数太多。

但这行得通,

fopen("file.txt",fpointer);

我怎样才能解决这个问题?代码中的headers是不是一定要修改?

你不能打电话

fopen("%s",stringarray,fpointer); 

因为那不是 fopen 的工作方式。您不能按照您想要的方式来调用这样的标准函数——您必须按照 the documentation 所说的方式来调用它。你不能打电话

 fopen("file.txt",fpointer);

要么。你必须调用类似

的东西
fpointer = fopen("file.txt", "r");

假设你已经声明

FILE *fpointer;

这样 fpointer 将成为您阅读文件 file.txt.

时的 "open file pointer" 或 "file handle"
fopen (const char *filename, const char *mode)

如果您查看 fopen 函数,它只需要两个参数作为输入。所以,你不能像fopen("%s",stringarray,fpointer);那样使用它。有关 fopen() 的更多信息,请访问 here

假设stringarray是一个char *(真的是一个chararray),直接传给fopen就可以了。不用格式化%s,已经是字符串了

FILE *fp = fopen(stringarray, "r");

C 中的函数采用非常、非常、非常具体的参数。 fopen 将文件名作为 char *,将打开文件的模式(读、写等)作为另一个 char *。它 returns 一个指向打开文件的指针,如果有错误则为 NULL。


如果您确实需要进行某种格式化,您可以使用 sprintf 进行格式化并将结果传递给 fopen

// Allocate memory to store the result of sprintf
char filename[256];
char name[] = "foo";

// filename = foo.txt
sprintf(filename, "%s.txt", name);

// Open foo.txt
FILE *fp = fopen(filename, "r");