Problème avec fopen

alicia -  
hibou57 Messages postés 132 Statut Membre -
Bonjour,
je suis en train de travailler sur un projet en C sous Linux ...
En fait, j'aimerais ouvrir un fichier "fichier.txt"
J'ai un pointeur PTR sur une structure STRUCT qui contient un champ NOM de type char * :

typedef struct {
char * NOM;
} STRUCT;

STRUCT * PTR;

Ce champ contient la valeur "fichier.txt"
Pour ouvrir le fichier, je fais :
FILE * my_file = fopen(PTR->NOM,"r");
En faisant cela, le fichier ne s'ouvre pas, la fonction fopen me renvoie la valeur NULL alors que en faisant un printf, je vérifie bien que PTR->NOM vaut "fichier.txt"

Par contre, j'arrive à ouvrir correctement le fichier en faisant :
FILE * my_file = fopen("fichier.txt","r");

Merci de m'aider svp

2 réponses

mamiemando Messages postés 34243 Date d'inscription   Statut Modérateur Dernière intervention   7 898
 
Il faut que fichier.txt soit situé dans le même repertoire que ton exécutable pour que ca marche. En général on laisse à l'utilisateur le soin de choisir le nom du fichier en le passant en paramètre du programme
#include <stdlib.h>
#include <stdio.h>

int main(int argc,char **argc){
  FILE *f;
  if(argc<2){
    printf("usage : %s filename\n",argv[0]);
    return 1;
  }
  f=fopen(argv[1],"r");
  if (!f){
    printf("%s : invalid filename\n",argv[1]);
    return 2;
  }
  //je m'amuse avec f
  //...
  fclose(f);
  return 0;
}

Bonne chance
0
hibou57 Messages postés 132 Statut Membre 61
 
En effet Alicia, c'est trés bizzare :-/

As tu vérifier que PTR->NOM est initialisé au bon endroit ? (i.e. avant son utilisation).

Vu que tu ne donne pas le code complet, on ne peut pas s'en assurer (même si à priori je te fais confiance pour ça).

Mais si tu donne le code complet, je peux essayer de le compiler chez moi des deux manières, pour voir si j'ai la même différence que toi.

Mais normalement, ça devrait marcher... c'est vraiment bizzare : peut-être un bug du compilateur.
0