Ouverture fichier en c

Résolu
lucieb31 Messages postés 363 Statut Membre -  
lucieb31 Messages postés 363 Statut Membre -
Bonjour,
J'ai un probleme d'ouverture de fichier dans un programme que je suis en train de faire. Ce probleme ne survient que lors de l'execution sous windows, grace à code blocks. En effet quand je l'execute sous linux tout fonctionne trés bien, mais il faudrait qu'il fonctionne aussi sous windows.

Voici là fonction où est le probleme :

void recuperation_du_mot_dans_fichier(tableaux *tab,char *mot,int i,int t){

int a,taille;
FILE *id_fich;
char *fichier;

fichier = (char *)malloc(12*sizeof(char));

switch(t){
case 5 : fichier = "mot_cinq.txt";
break;
case 6: fichier = "mots_six.txt";
break;
case 7 : fichier = "mot_sept.txt";
break;
case 8 : fichier = "mot_huit.txt";
break;
case 9 : fichier = "mot_neuf.txt";
break;
}

id_fich = fopen(fichier,"rt");

if(id_fich == NULL){
printf("probleme d'ouverture fichier\n");
}

a = fseek(id_fich,((t+2)*(i-1)),SEEK_SET);

fgets(mot,t+1,id_fich);

for(taille=0;taille<TAILLE_MAX;taille++) {
(*tab).mot_a_chercher[taille] = mot[taille];
}
fclose(id_fich);

free(fichier);

}

Lors de l'ouverture du fichier, j'ai id_fich qui est egal à NULL donc je ne peut pas recuperer le mot que je veut, j'ai tout essayé, et le nom du fichier à ouvrir est bien sauvegardé dans la variable "fichier". Donc je ne vois pas d'ou cela peut venir.

Merci de m'aider
Configuration: Windows Vista
Internet Explorer 7.0

3 réponses

  1. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    Je pense que tu as déjà vérifié mais quand tu lances ton exe, les fichiers sont bien dans le même répertoire?
    @+
    0
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    fichier = (char *)malloc(12*sizeof(char));
    Tu n'as pas besoin d'allouer puisque ficher va pointer sur une chaîne constante.

    fichier = "mot_cinq.txt";
    Lorsque tu fais ça, la zone que tu as allouée dans le tas avec malloc sera perdue.
    Le free final va libérer la zone constante "mot_cinq.txt", ce qui devrait planter.

    Tu as juste à enlever l'allocation malloc, et le free.

    id_fich = fopen(fichier,"rt");
    Enlève le "t", ce n'est pas standard.

    Essaie déjà ça et tiens nous au courant.

    Cdlt
    0
  3. lucieb31 Messages postés 363 Statut Membre 62
     
    c'est bon, j'ai reglé mon probleme.
    merci de ton aide
    0