2010-02-11 14 views
5

Wie würde ich ein Array von Dateizeigern in C erstellen?
Ich würde gerne ein Array von Dateizeigern zu den Argumenten von main ... wie a1.txt, a2.txt, etc ... erstellen. Also würde ich ./prog arg1.txt arg2.txt arg3.txt laufen lassen, damit das Programm diese Dateien benutzt.
Dann wird das Argument für die Haupt ist char **argvArray von Zeigern zu Dateien erstellen

Von argv, würde Ich mag die Anordnung von Dateien/Dateizeiger erstellen. Das habe ich bisher.

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

Ich kann nichts falsch finden. Was ist das Problem? –

Antwort

7

Der Code ist in Ordnung, aber denken Sie daran, in C99 zu kompilieren.

Wenn Sie nicht über C99 verwenden, müssen Sie das Array auf Haufen erstellen, wie:

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

// operations... 

free(inputFiles); 
+0

Danke. Also nur um zu testen, wie würde ich die Namen der Dateien drucken, auf die die Array-Zeiger zeigen? – Hristo

+0

@Hristo - Es gibt keine Möglichkeit, den Namen der Datei aus der Datei * wiederherzustellen. Aber da Sie das Array argv haben, kann der Dateiname von inputFiles [n] bei argv [n] gefunden werden. –

+0

Ja, ich habe die Namen der Dateien in einem anderen Array gespeichert, ich habe mich nur gefragt, ob ich es anders machen kann. Ich bin neu in C, das ist meine 4. Woche :) – Hristo

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; 
} 

Er druckt verschiedene Zeiger für jeden Dateizeiger zusammen mit den Namen. Dem Betriebssystem erlauben, Dateien richtig zu schließen :)

+0

Danke. Das macht sehr viel Sinn! – Hristo