|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Problème avec "fclose" [ Divers / Débutant(e) ] (Polack77)
Informations & options pour cette discussion
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é 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
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

HTC G1
Entre 449€ et 449€
|