2013-02-18 5 views
0

Fondamentalement, mon programme invite l'utilisateur à entrer le nom d'un fichier qu'il veut ouvrir. Mon programme est censé ouvrir ce fichier et analyser son contenu dans un tableau 2D. Mais comment faites-vous pour que le programme ouvre le fichier que l'utilisateur désigne? Voici mon code à ce jour:Programmation C: comment ouvrir un fichier désigné et allouer dynamiquement son contenu dans un tableau 2D?

#include <stdio.h> 
#include <string.h> 
FILE *open_file(int ar[3][4]); 

int main() 
{ 
    FILE *fp; 
    int ar[3][4]; 

    fp = open_file(ar); 
} 

FILE *open_file(int ar[3][4]) 
{ 
    FILE *fp; 
    int i; 
    char file[80]; 
    printf("Please input file name "); 
    scanf("%s", &file); //am I supposed to have written ("%s", file) instead? 
    fp = fopen("%s", "r");// very confused about this line; will this open the file? 
    for (i = 0; i < 12; i++) 
    fscanf(fp, "%d", &ar[i][]); //how do you scan the file into a 2D array? 
} 

Pour utiliser malloc, je dois écrire quelque chose comme fp = (int *) malloc (sizeof (int)) ;?

Répondre

0

Le varialble file contient le nom du fichier entré par l'utilisateur, passez-le à fopen. Ce que vous avez là est une chaîne de format.

fp = fopen(file, "r"); 
1
scanf("%s", &file); // am I supposed to have written ("%s", file) instead? 

Oui, mais pas pour la raison que vous ne le pensez. Alors

scanf("%s", file); 

est correcte au lieu (explication: le spécificateur de format %s dit scanf() d'attendre un char *, mais vous faisant passer un char (*)[80] si vous écrivez l'opérateur AddressOf et spécificateurs désadaptation pour printf() et scanf() invoquez non définie comportement).

fp = fopen("%s", "r"); // very confused about this line; will this open the file? 

Non, ce ne sera pas le cas. Il va ouvrir le fichier nommé %s. Vous devez écrire

fp = fopen(file, "r"); 

à la place. Ne supposez pas que vous pouvez utiliser une chaîne de format où vous ne pouvez pas.

+0

Oh je vois. Je vous remercie. Pourriez-vous m'aider à allouer dynamiquement le contenu du fichier dans un tableau en utilisant malloc? – Johnny

+0

+1: très intéressant. Pourriez-vous expliquer une portée plus? le malloc et l'utilisation ... Dans le corps de la réponse, s'il vous plaît – qPCR4vir

+0

@ qPCR4vir Spécifiquement? (Désolé, mais je ne donne pas de cours complets dans les commentaires SO. Vous devriez rechercher un tutoriel C complet et complet et apprendre la langue.) –

Questions connexes