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");
为什么我不能这样做?
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
.
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");