【问题标题】:How to fopen with name already in a array of strings如何在字符串数组中使用名称打开
【发布时间】:2012-01-15 14:18:26
【问题描述】:

我正在寻找一种使用方法 FILE * fopen ( const char * filename, const char * mode ); 但间接传递文件名。我还想知道如何间接调用名称直接取自 argv[] 的函数。我不想将字符串存储在缓冲区字符数组中。例如:

 int main (int argc,char *argv[])
    {
      FILE *src;
      ...
      src = fopen("argv[1]", "r");   //1st:how to insert the name of the argv[1] for example?
      ...
     function_call(argc,argv);    //2nd:and also how to call a function using directly argc argv
     ...
     }
    void create_files(char name_file1[],char name_file2[])
    {...}

我是否必须存储长度和字符串才能调用函数? (关于第二个问题):)

【问题讨论】:

  • 因为argv[1]是一个以null结尾的字符串,所以不需要传递长度,fopen()会在运行时使用strlen()来确定字符串的长度。

标签: c arguments fopen argv function-call


【解决方案1】:

您可以简单地使用argv[1],它是char *

if (argc < 2)
    /* Error. */

src = fopen(argv[1], "r");

create_files 也是如此。

create_files(argv[1], argv[2]);

【讨论】:

    【解决方案2】:

    fopen 接受一个指向字符数组的指针。 argv 是指向字符数组的指针数组的指针。

    fopen(argv[1], "r")
    

    将argv数组第二个位置的指针传递给fopen

    如果你想传递argcargv,就照原样传递它们。它们的类型不会改变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多