Ouverture fichier en c

Résolu/Fermé
lucieb31 Messages postés 345 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 28 juillet 2012 - 26 avril 2009 à 21:11
lucieb31 Messages postés 345 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 28 juillet 2012 - 26 avril 2009 à 21:54
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 samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
26 avril 2009 à 21:27
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
26 avril 2009 à 21:49
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 mercredi 14 janvier 2009 Statut Membre Dernière intervention 28 juillet 2012 62
26 avril 2009 à 21:54
c'est bon, j'ai reglé mon probleme.
merci de ton aide
0