Accueil > Forum > > > > Problème avec "fclose"
Problème avec "fclose"
jeudi 6 juillet 2006 à 17:33:25 |
Problème avec "fclose"

Polack77
|
Bonjours, cas fais 2 heures que je cherche mon bug et je ne trouve pas! C'est frustrant! J'ai fais pas mal de test et je ne trouve rien. Je met donc mon code sur le poste (cas fais longtemps que je n'ai pas fais de C, 4/5 ans, et là vraiment je ne m'en sort pas!) #include <cstdlib> #include <iostream> #include <string.h> #include <stdlib.h> typedef unsigned long ErreurCode;
ErreurCode ChercheTextDansFichier (FILE * Fichier, char * TextAChercher, unsigned long * Position) { char * Tempon; unsigned long PositionFichier = 0; unsigned long PositionChaine = 0; unsigned long TailleFichier; fseek (Fichier, 0, SEEK_END); TailleFichier = ftell(Fichier); fseek (Fichier, 0, SEEK_SET); Tempon = (char *)malloc(strlen(TextAChercher)); while (!(feof(Fichier)) && (PositionChaine < strlen(TextAChercher))) { PositionFichier++; Tempon[PositionChaine] = (char)fgetc (Fichier); PositionChaine++; Tempon[PositionChaine] = '\0'; if (strncmp(TextAChercher,Tempon,PositionChaine) != 0) { PositionChaine = 0; } } if (feof(Fichier)) { *Position = 0; } else { *Position = PositionFichier - strlen(TextAChercher); } free (Tempon); return 0; }
ErreurCode LitDonneeBaliseFichier (FILE * Fichier, char * Balise, char ** Donnee) { unsigned long PositionDepart; unsigned long PositionFin; char * Tempon;
Tempon = (char *)malloc (strlen(Balise) + 3); Tempon[0] = '<'; Tempon[1] = '\0'; strcat (Tempon, Balise); strcat (Tempon,">"); ChercheTextDansFichier (Fichier, Tempon, &PositionDepart); PositionDepart += (strlen(Tempon)); //Position de début de balise (donc carac '<') - carac de fin de chaine Tempon[1] = '/'; Tempon[2] = '\0'; strcat (Tempon, Balise); strcat (Tempon,">"); ChercheTextDansFichier (Fichier, Tempon, &PositionFin); //position de début de balise donc OK *Donnee = (char *)malloc (PositionFin - PositionDepart + 2); //+1 car carac de fin de chaine + 1 (fichier commance à 0 et malloc à 1) *Donnee[0] = '\0'; fseek (Fichier, PositionDepart, SEEK_SET); PositionFin -= PositionDepart; PositionDepart = 0; while (PositionDepart < PositionFin) { (*Donnee)[PositionDepart] = (char)fgetc (Fichier); PositionDepart ++; } (*Donnee)[PositionDepart] = '\0'; free (Tempon); return 0; }
int main(int argc, char *argv[]) { FILE * FichierXML; char * Texte; FichierXML = fopen("D:\\schema_bodacc_Bilan_V2006.01.xml","r"); LitDonneeBaliseFichier (FichierXML,"versionSchema",&Texte); printf ("Fin de test valeur :\n%s\n",Texte); free (Texte); system("PAUSE"); fclose(FichierXML); system("PAUSE"); return 0; }
PS : Je compile avec "Dev-C++". PS² : Si vous avez une meilleur syntax (pour autre chose que le "fclose") vous pouvez bien sur me la faire parvenir. Merci. D'oh! Nuts!
Mmmmm... DONUTS
|
|
jeudi 6 juillet 2006 à 17:44:13 |
Re : Problème avec "fclose"

AlexMAN
|
Pourquoi passer un char ** a LitDonneBaliseFichier() ?
LitDonneeBaliseFichier (FichierXML,"versionSchema",Texte);
ErreurCode LitDonneeBaliseFichier (FILE * Fichier, char * Balise, char * Donnee) { ... Donnee = (char *)malloc (PositionFin - PositionDepart + 2); ... }
Et pour tout acces a Donnee, il suffit de faire un Donnee[].
Si tu bosses sous windows, regarde du coté des API CreateFile(), CloseFile()..etc
+2(p - n)
|
|
jeudi 6 juillet 2006 à 20:07:00 |
Re : Problème avec "fclose"

BruNews
|
Pense au but à atteindre, ça t'évitera d'amuser le processeur avec des instruction inutiles. Tempon[0] = '<'; Tempon[1] = '\0'; strcat(Tempon, Balise);
deviendrait Tempon[0] = '<'; strcpy(Tempon + 1, Balise); etc...
ciao... BruNews, MVP VC++
|
|
vendredi 7 juillet 2006 à 09:07:28 |
Re : Problème avec "fclose"
|
vendredi 7 juillet 2006 à 09:09:02 |
Re : Problème avec "fclose"

turnerom
|
Salut,
une question me taraude : pourquoi les types de retours de toutes tes
fonctions (sauf le main) sont des unsigned long (typedefé en
ErreurCode) est qu'a chaque fois tu fais un return 0 ? Tes fonctions
devraient être de type void !!!
TuRn3r
|
|
vendredi 7 juillet 2006 à 09:11:35 |
Re : Problème avec "fclose"

turnerom
|
Sinon pour le fclose quel est son code de retour ?
As-tu testé le code de retour de fopen (pour être sur que ton fichier est bien ouvert par exemple) !
TuRn3r
|
|
vendredi 7 juillet 2006 à 09:15:22 |
Re : Problème avec "fclose"
|
vendredi 7 juillet 2006 à 09:23:32 |
Re : Problème avec "fclose"
|
vendredi 7 juillet 2006 à 10:12:50 |
Re : Problème avec "fclose"

turnerom
|
Peux tu trouver la ligne qui provoque l'erreur en mettant des printf un peu partout.
Sinon, dans ton cas ca peux passer, mais pense toujours dans tes malloc a mettre des sizeof, je m'explique: Tempon = (char *)malloc(strlen(TextAChercher)); doit devenir: Tempon = (char *)malloc(strlen(TextAChercher) *sizeof(char));
Tu as de la chance que ca passe car sur un Windows 32Bits (surquoi tu
dois etre a mon avis) sizeof(char) == 1. Mais pense toujours à le
mettre ca te sauveras la mise un jour 
TuRn3r
|
|
vendredi 7 juillet 2006 à 10:14:59 |
Re : Problème avec "fclose"
|
Cette discussion est classée dans : fichier, char, unsigned, tempon, positiondepart
Répondre à ce message
Sujets en rapport avec ce message
Debutant : ecrire et lire un fichier txt [ par manu ]
Bonjour a tous.Je debute, aussi desole.... :)Je cherche donc a ecrire dans un fichier txt, puis a lire ce fichier ligne a ligne, faire un split / expl
ecriture fichier txt turboC++ [ par idk ]
qqun connais une fonction, qui te place le cursor, (dans un fichier),CAD qui renvoie à la ligne suivante exemple char prenom="tom"char nom="bauq" Et d
écriture dans un fichier txt [ par jimtruand ]
bonjour,j'ai un fichier txt à traiter et à envoyer via ftp à un serveur. la partie ftp est ok.la partie fichier pt'problèmedans le fichier je dois mod
Lecture/Ecriture/Modification d'une structure dans un fichier [ par paniX ]
Bonjour. Alors voici mon probleme:j'ai créé une structure client qui a cette forme :struct client{ int id; char nom[30]; char prenom[30]; char adresse
Ecriture/lecture dans un fichier [ par SneakGuy ]
Haaa... Merci, sa m'a aider... Enfin, j'ai encore plusieurs problemes...pour l'ecriture j'ai quelque chose qui ressemble a sa:char user[20];char pass[
Pointeurs sur des tableaux de plusieurs dimensions [ par ProGamer ]
J'ai besoin de faire des pointeurs sur ce genre de tableaux. Voici comment je m'y prends (et surtout, voici comment ça ne marche pas...):unsigned char
Comment concertir Ansistring en unsigned char*????? [ par asik38 ]
Ansistring x;unsigned char str[100];str[100]=x;??????Merci!!!
pb avec conio je cher cherche l'erreur( j'ai merde sur le mess precedent) [ par kin ]
portpia.cpp#include"PortPiaPc.h"void main(){ PortPiaPc inst; inst(0x320,0x0f);}PortPiaPc.cpp#include "PortPiaPc.h"#include "conio.h"PortPiaPc::PortPia
Unsigned char to AnsiString et Ansistring to UnS Char??? [ par asik38 ]
Comment on fait pour convertir unsigned char an ansistringEt de AnsiString en unsigned char*Merci!!!
ça concerne la lecture et l'ecriture sur un fichier et ... [ par wfish ]
voila mon pb :j'ai fais un ptit prog de traitement de fichier. il sert à mettre certaines infos prises dans un fichier et les mettre dans un autre !!1
Livres en rapport
|
Derniers Blogs
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|