создать массив указателей на файлы - PullRequest
5 голосов
/ 11 февраля 2010

Как мне создать массив файловых указателей в 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");

Ответы [ 2 ]

7 голосов
/ 11 февраля 2010

Код в порядке, но не забудьте скомпилировать в C99.

Если вы не используете C99, вам нужно создать массив в куче, например:

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

// operations...

free(inputFiles);
1 голос
/ 11 февраля 2010
#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;
}

Он печатает разные указатели для каждого указателя файла вместе с именами. Разрешение ОС корректно закрывать файлы:)

...