Ouverture fichier en c

Résolu
lucieb31 Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   -  
lucieb31 Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

3 réponses

chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
lucieb31 Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   62
 
c'est bon, j'ai reglé mon probleme.
merci de ton aide
0