0

我需要将命令行参数从主函数(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);
}

用户定义函数从主函数获取根文件。复制它并与调用函数传递的扩展名连接

我如何将 rootName 值的值传递给我的主函数之外的 GetFile 函数。感谢任何帮助

4

1 回答 1

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 的标准编码风格避免使用caMelCaseMixedCase变量名称,而支持所有小写字母,同时保留大写名称以与宏和常量一起使用。这是一个风格问题——所以这完全取决于你。参见例如NASA - C 风格指南,1994

于 2017-05-07T08:46:37.993 回答