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 -
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
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:
- Ouverture fichier en c
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
3 réponses
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?
@+
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?
@+
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
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