将命令行参数从main函数传递给用户定义C函数

时间:2017-05-06 10:12:38

标签: c command-line-arguments file-pointer

我需要将命令行参数从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函数。非常感谢

1 个答案:

答案 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的标准编码样式避免使用caMelCaseMixedCase变量名来支持所有小写同时保留大写名称以用于宏和常量。这是一个风格问题 - 所以它完全取决于你。参见例如NASA - C Style Guide, 1994