继续评论,你必须很接近。这是一个将函数声明和定义清理为工作示例的示例:
#include <stdio.h>
#include <string.h>
FILE *getfile (char *rn, char *ext, char *rw);
int main (int argc, char **argv)
{
FILE *p;
char *rootname = argc > 1 ? argv[1] : "somefile";
p = getfile (rootname, ".name", "r");
if (p)
printf ("file open for reading!\n");
else
fprintf (stderr, "error: file open failed.\n");
return 0;
}
FILE *getfile (char *rn, char *ext, char *rw)
{
char fn[512] = "";
if (!rn || !*rn || !ext || !*ext || (*rw != 'r' && *rw != 'w')) {
fprintf (stderr, "getfile() error: invalid parameter.\n");
return NULL;
}
strcpy (fn, rn);
strcat (fn, ext);
printf ("opening: %s, filemode: %s\n", fn, rw);
return fopen (fn, rw);
}
示例文件
$ touch myfile.name
示例使用/输出
$ ./bin/fileopenfn myfile
opening: myfile.name, filemode: r
file open for reading!
文件名不匹配的示例
$ ./bin/fileopenfn
opening: somefile.name, filemode: r
error: file open failed.
如果您还有其他问题,请仔细查看并告诉我。
注意:虽然不是错误,但 C 的标准编码风格避免使用caMelCase
或MixedCase
变量名称,而支持所有小写字母,同时保留大写名称以与宏和常量一起使用。这是一个风格问题——所以这完全取决于你。参见例如NASA - C 风格指南,1994