Bonjour!
J'ai un problème pour la lecture d'un fichier texte. Le fichier est créé mais lorsque je donne le chemin d'accées fopen me renvoie la valeur NULL. Pourtant le fichier existe bien lorsque je lance le debugger, l'"adresse" qui correspond au chemin d'accés est correctement transmis. Voici mon code quelqu'un pourrait-il m'expliquer mon erreur.
Une grosse partie de ce code n'a rien à voir avec la lecture d'un fichier.
Merci d'avance
/* main.c */
#include "main.h"
#include <stdio.h>
#include "ajouter.h"
void main()
{
arbre* a;
char* adresse;
a = NULL;
printf("Quel fichier voulez-vous ouvrir? \n");
scanf("%s",&adresse);
a = ajouter(a,&adresse);
}
#include "main.h"
#include "ajouter.h"
#include <stdlib.h>
#include <stdio.h>
#include "conio.h"
#include <string.h>
arbre* ajouter(arbre* a, char* adresse)
{
char* chaine1;
char* chaine2;
FILE* fichier;
fichier = fopen(adresse,"r");
if (fichier == NULL)
{
printf("Ce fichier n'existe pas.");
}
fscanf (fichier,"%s",chaine1);
if (chaine1 == "**")
{
do
{
fscanf (fichier,"%s",&chaine1);
if (chaine1 == "auteur:")
{
fscanf (fichier,"%s",&chaine1);
do
{
fscanf (fichier,"%s",&chaine2);
strcat (chaine1, chaine2);
}while (chaine2 != "$$");
a->info.auteur = chaine1;
}
else
{
if (chaine1 == "titre:")
{
fscanf (fichier,"%s",&chaine1);
do
{
fscanf (fichier,"%s",&chaine2);
strcat (chaine1, chaine2);
}while (chaine2 != "$$");
a->info.titre = chaine1;
}
else
{
if (chaine1 == "edition:")
{
fscanf (fichier,"%s",&chaine1);
do
{
fscanf (fichier,"%s",&chaine2);
strcat (chaine1, chaine2);
}while (chaine2 != "$$");
a->info.edition = chaine1;
}
else
{
if (chaine1 == "nombre de pages:")
{
fscanf (fichier,"%s",&chaine1);
do
{
fscanf (fichier,"%s",&chaine2);
strcat (chaine1, chaine2);
}while (chaine2 != "$$");
a->info.page = chaine1;
}
else
{
if (chaine1 == "prix:")
{
fscanf (fichier,"%s",&chaine1);
do
{
fscanf (fichier,"%s",&chaine2);
strcat (chaine1, chaine2);
}while (chaine2 != "$$");
a->info.prix = chaine1;
}
else
{
if (chaine1 == "genre:")
{
fscanf (fichier,"%s",&chaine1);
do
{
fscanf (fichier,"%s",&chaine2);
strcat (chaine1, chaine2);
}while (chaine2 != "$$");
a->info.genre = chaine1;
}
else
{
if (chaine1 == "nombre d'exemplaires:")
{
fscanf (fichier,"%s",&chaine1);
do
{
fscanf (fichier,"%s",&chaine2);
strcat (chaine1, chaine2);
}while (chaine2 != "$$");
a->info.nbre = atoi(chaine1);
}
else
{
if (chaine1 == "resume:")
{
fscanf (fichier,"%s",&chaine1);
do
{
fscanf (fichier,"%s",&chaine2);
strcat (chaine1, chaine2);
}while (chaine2 != "$$");
a->info.resume = chaine1;
}
else
{
if (chaine1 == "ISBN:")
{
fscanf (fichier,"%s",&chaine1);
do
{
fscanf (fichier,"%s",&chaine2);
strcat (chaine1, chaine2);
}while (chaine2 != "$$");
a->info.ISBN = atoi(chaine1);
}
else
{
printf(" Cette commande n'est pas acceptable.");
}
}
}
}
}
}
}
}
}
}while (chaine1 != "**");
a->balance = 0;
a->sad = NULL;
a->sag = NULL;
}
else
{
printf("Une erreur de saisie a été réalisée.");
}
return a;
fclose(fichier);
}
Afficher la suite