【问题标题】:create array of pointers to files创建指向文件的指针数组
【发布时间】:2010-02-11 07:34:26
【问题描述】:

如何在 C 中创建一个文件指针数组?
我想创建一个指向 main 参数的文件指针数组......比如 a1.txt、a2.txt 等......所以我会运行./prog arg1.txt arg2.txt arg3.txt让程序使用这些文件。
那么 main 的参数是char **argv

我想从 argv 创建文件/文件指针数组。这是我目前所拥有的。

FILE *inputFiles[argc - 1];
int i;
for (i = 1; i < argc; i++)
    inputFiles[i] = fopen(argv[i], "r");

【问题讨论】:

  • 我找不到任何问题。有什么问题?

标签: c file io argv


【解决方案1】:

代码没问题,但记得用C99编译。

如果不使用C99,则需要在堆上创建数组,如:

FILE** inputFiles = malloc(sizeof(FILE*) * (argc-1));

// operations...

free(inputFiles);

【讨论】:

  • 谢谢。所以只是为了测试,我将如何打印数组指针指向的文件的名称?
  • @Hristo - 无法从 FILE* 中恢复文件名。但是因为你有 argv 数组,所以 inputFiles[n] 的文件名可以在 argv[n] 找到。
  • 是的,我将文件的名称存储在另一个数组中,我只是想知道我是否可以用另一种方式来做。我是 C 新手,这是我的第 4 周 :)
【解决方案2】:
#include <stdio.h>`

int main(int argc, char **argv)
{
FILE *inputFiles[argc - 1];
int i;
for (i = 1; i < argc; i++)
{
    printf("%s\n",argv[i]);
    inputFiles[i] = fopen(argv[i], "r");
    printf("%p\n",inputFiles[i]);
}
  return 0;
}

它为每个文件指针以及名称打印不同的指针。允许操作系统正确关闭文件:)

【讨论】:

  • 谢谢。这很有意义!
猜你喜欢
  • 1970-01-01
  • 2010-11-06
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多