我需要将命令行参数从main函数(main)传递给用户定义的函数(GetFile): 我试过这个:
主要功能:
FILE *GetFile(String Extension, String RW);
int main(int argc, char** argv)
{
File *p
char *rootName = argv[1];
p= GetFile( ".name", "r");
if (p)
{ Do some Stuff!! }
return 0;
}
用户定义的功能:
FILE *GetFile(String Extension, String RW)
{
char Fn[512];
strcpy(Fn, rootName);
strcat(Fn, Extension);
return fopen(Fn, RW);
}
用户定义的函数从Main function.copy获取rootname文件并与调用函数传递的扩展名连接
如何将rootName值的值传递给我的main函数之外的GetFile函数。非常感谢
答案 0 :(得分:0)
继续发表评论,你必须接近。下面是一个示例,将函数声明和定义清理为一个工作示例:
#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 Style Guide, 1994