为什么我不能这样做?
fopen("%s",stringarray,fpointer);
上面的代码返回一个错误,提示要执行的参数过多。
但这有效
fopen("file.txt",fpointer);
我该如何解决这个问题?我是否需要修改代码中的标题?
最佳答案
假设stringarray
是char *
(实际上是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");