begin process at 2010 03 17 23:03:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

problème de lecture d'un fichier txt


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème de lecture d'un fichier txt

lundi 22 avril 2002 à 23:53:50 | problème de lecture d'un fichier txt

yeager

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);
}
vendredi 6 février 2004 à 22:05:47 | Re : problème de lecture d'un fichier txt

jahjah421


je pense ke ton probleme vient du fait ke tu doit avoir un petit probleme avec les pointeurs.

kan tu déclare :

char * chaine;

deja fo fer 1 malloc sinon risk de seg fault ou autres
si t sur unix utilise electric fence,c bien pour voir les seg fault

chaine = (char*) malloc(1024*(sizeof(char)));

/* fo pas mettre de & , chaine c deja une adresse !!*/
scanf("%s",chaine);

scanf("%s",&chaine) ca veu rien dire , ca voudrait dire que tu va voir l'adresse d'une adresse.

par contre pour prendre un entier la fo faire
int my_variable;

scanf("%d",&my_variable);

puisque tu va écrire a ladresse de my_variable;


pareil pour ta fonction ajouter .



EPITA promo 2007 .












Cette discussion est classée dans : fichier, do, fscanf, chaine1, chaine2


Répondre à ce message

Sujets en rapport avec ce message

affichage de nombre avec DrawText [ par jouille ] Bonjour tout le monde !j'ai besoin de faire deux choses mais je n'y arrive pas :((tout d'abord j'aimerai pouvoir afficher des nombres a l'ecran, du ge fscanf + lecture fichier obj [ par fafa21081974 ] hello tout le monde Un petit envoi pour appeler à l'aide. Bon voilà, je veux lire des données dans un fichier.Obj pour les sommets pas de soucis ma Pb avec fscanf [ par max4163 ] je veux lire les données d'un fichier a partir d'une fonction de ma classe CFichier mais ca ne marche pas!!! Voila ce que j'ai programmé en simplifié: recuperation de donnes sur fichier texte [ par semnos21 ] Bonjour,poru certain d'entre vous ce que je vais demander va paraitre simple, ca tombe bien, j'en ai marre de me casser les dents et de perdre du temp Remplacement de chaines de caractères dans un fichier [ par tigerskin ] Bonjour !!! J'ai un problème : je souhaite réécrire une donnée dans un fichier par-dessus une autre donnée...le programme entre bien dans la condition Fscanf ne fait pas ce que je veux ... [ par tichadok ] Bonjour, voici mon problème condensé dans ce bout de code : un fichier fic.txt contient : 2.0 3.0 un fichier lect.c contient : #include int main( fprintf, fscanf ne marchent pas!!!! [ par thassa ] salut, je veux écrire les données d'un objet personne dans un fichier et puis de relire un objet personne à partir de ce fichier.et tout ceci en util Lecture et ecriture sur fichier [ par developvbdebut ] Bonjour tout le mondeJe travaille sur la gestion des fichier en c.Mon livre n'explique pas clairement l'ectriture et la lecture dans les fichiers.Voic Ouverture de fichier dans la classe document [ par sliders75 ] Bonjour, Je veux ouvrir un fichier en utilisant la méthode OnFileOpen() dans la classe CDocument de mon projet, mais j'ai enlevé le lancement automat comment recuperer la source d'un fichier html ? [ par gege1024 ] a partir d'une adresse.(evidement, sans faire "afficher la source" dans le navigateur).gege


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales