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
[MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER[MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER par phil
Un post rapide pour vous informer de la disponibilité de la vidéo de ma présentation sur SharePoint 2010 & Team Foundation Server. http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=20215d48-02e3-4d43-8c36-e53505c3b316 Dans la ...
Cliquez pour lire la suite de l'article par phil [MSTD10] SQL SERVER 2008 POUR LES DéVELOPPEURS ET VISUAL STUDIO TEAM SYSTEM DATABASE EDITION[MSTD10] SQL SERVER 2008 POUR LES DéVELOPPEURS ET VISUAL STUDIO TEAM SYSTEM DATABASE EDITION par Miiitch
Lors de cette session que j'ai animé avec Rui , j'ai eu l'occasion de présenter, en plus des nouveautés de SQL Server 2008, comment utiliser l'édition "database" de Visual Studio 2008. Le principe? Avoir les mêmes outils lors que l'on travaille avec une b...
Cliquez pour lire la suite de l'article par Miiitch [WF4] LOCALISER SIMPLEMENT UNE ACTIVITé ET SON DESIGNER WPF[WF4] LOCALISER SIMPLEMENT UNE ACTIVITé ET SON DESIGNER WPF par JeremyJeanson
La localisation . vous connaissez ce system miraculeux qui permet à votre application de s'afficher dans la langue de l'utilisateur (à condition de l'avoir intégrée dans votre programme). Comment mettre en place la localisation dans WF4? Cette question m'...
Cliquez pour lire la suite de l'article par JeremyJeanson [TECHDAYS 2010] WEBCASTS ET SLIDES[TECHDAYS 2010] WEBCASTS ET SLIDES par Audrey
Les webcasts des sessions des Techdays 2010 sont maintenant disponibles en ligne ! Me concernant, voici les slides et le webcast de la session Blend 3 / Skechtflow : Dessinez c'est gagné ! (animée avec Michel Perfetti ) Les slides et le webcast : Blend 3/...
Cliquez pour lire la suite de l'article par Audrey NDEPEND V3. J'ADORE SON INTéGRATION AVEC VS2010NDEPEND V3. J'ADORE SON INTéGRATION AVEC VS2010 par tja
Après une petite introduction à son utilisation que vous pouvez lire ici j'ai également eu envie d'installer ma copie et de jouer un peu avec. Après les premières minutes de son utilisation. J'ai tout de suite ADORE. L'utilisation intuitive sans besoi...
Cliquez pour lire la suite de l'article par tja
Logiciels
Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor Xlite (v 3.0 build 41150)XLITE (V 3.0 BUILD 41150)c'est un logiciel qui permet de téléphoner par Internet à l'aide d'un compte SIP pratique pour le... Cliquez pour télécharger Xlite Academy System (10.9.3.0)ACADEMY SYSTEM (10.9.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|