为什么我不能这样做?

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

上面的代码返回一个错误,提示要执行的参数过多。

但这有效

fopen("file.txt",fpointer);

我该如何解决这个问题?我是否需要修改代码中的标题?

最佳答案

假设stringarraychar *(实际上是chararray),只需将其直接传递到fopen即可。无需使用%s格式化它,它已经是一个字符串。

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

C语言中的函数接受非常非常非常具体的参数。 fopen 将文件名作为char *,将打开文件(读,写等)的模式作为另一char *。它返回指向打开的文件的指针,如果有错误,则返回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");

07-24 09:46
查看更多