Accueil > Forum > > > > Sous win32 & Dev-C++, Problème avec fputs()
Sous win32 & Dev-C++, Problème avec fputs()
dimanche 9 novembre 2003 à 13:32:39 |
Sous win32 & Dev-C++, Problème avec fputs()

FoLKeN91
|
Bonjour Comme dit dans le topic, je suis sous windows 2k, je compile avec Dev-C++ 4.9.8.0, et je souhaite copier certaines lignes d'un fichier .txt dans un autre, pour ce, j'utilise fgets et ensuite fputs ca compile très bien mais lorsque j'execute, le programme plante, et après plusieurs tests, j'ai remarqué que c'est au niveau de la fonction fputs(char *str, FILE *FileOut); que ca ne passe pas, voici les infos nécessaire de mon code (il n'y a pas tout ne vous inquietez pas :/ ) : FILE *FileIn; FILE *FileOut; char *str; int n=150; FileIn = fopen("temp.txt", "r"); FileOut = fopen("day.txt", "w+"); str = (char *)malloc(sizeof(char)*n); fgets(str,n,FileIn); fputs(str,FileOut); // ERREUR A CE NIVEAU LA
|
|
dimanche 9 novembre 2003 à 13:33:19 |
Re : Sous win32 & Dev-C++, Problème avec fputs()

FoLKeN91
|
Merci d'avance (j'en oublie ma politesse ^^)
|
|
dimanche 9 novembre 2003 à 14:32:20 |
Re : Sous win32 & Dev-C++, Problème avec fputs()

aardman
|
Salut, Ce code marche tres bien chez moi.
|
|
dimanche 9 novembre 2003 à 14:32:53 |
Re : Sous win32 & Dev-C++, Problème avec fputs()

D1m3x
|
Tu pourrais essayer d'utiliser d'autres fonctions que ces deux, là, voici ton code avec les fonction fscanf et fprintf :
FILE *FileIn, *FileOut; char *str; // ligne qui a eviter de planter le prog si le fichier n'existe // pas! if ( ( FileIn = fopen( "temp.txt", "r" ) ) == NULL ) { printf( "Fichier introuvable!" ); return 1; } if ( ( FileOut = fopen( "day.txt", "w+" ) ) == NULL ) { printf( "Fichier introuvable!" ); return 1; }
str = ( char * )malloc( sizeof( char ) );
if ( str == NULL ) printf( "Pas assez de RAM pour allouer!" );
// Seul problème = va copier tout le contenu du fichier!!!! fscanf( FileIn, "%s", str ); fprintf( FileOut, "%s", str );
Et voilà je crois que ce n'est pas trop compliqué! tu peux aussi utiliser les fonctions fread et fwrite, mais je n'aime pas moi! mais en tout cas une chose à dire: le "w+" dans fopen, à chaque fois que le fichier sera ouvert avec le programme, son contenu sera entièrement effacé!!!
Essaye toujours ce que je t'ai donné sinon pose une question encore plus précise ;)
Bonne prog!
[DmX]
|
|
dimanche 9 novembre 2003 à 14:36:18 |
Re : Sous win32 & Dev-C++, Problème avec fputs()

aardman
|
Salut, A mon avis le prob vient d'autre part ou alors de Dev c++, car moi j'ai compilé avec 0 erreur 0 warning sous visual c++, et le prob marche impec.
|
|
dimanche 9 novembre 2003 à 14:57:01 |
Re : Sous win32 & Dev-C++, Problème avec fputs()

FoLKeN91
|
je viens d'essayer avec le fprintf, et le résultat est pareil, il doit y avoir une seg fault quelque part (c'est dommage que sous windows, je ne puisse pas bien cibler les erreurs). Je vais tenter d'expliquer un peu plus mon code :
J'ai un fichier temp.txt qui se fait pointer par FILE *FileIn (pour tous les fopen() j'ai deja fait les tests comme il se doit). Je souhaite faire une fonction permettant de trier dans ce fichier quelques lignes selon des balises (qui sont des strings), voici un bout de mon code :
/*Ces balises correspondent à des lignes entières dans le temp.txt */ char BaliseDay[28]={"ftp> quote site stats daydn"}; char BaliseWeek[29]={"ftp> quote site stats weekdn"}; char BaliseAll[28]={"ftp> quote site stats alldn"}; char BaliseSuccess[24]={"200 Command successful."}; FILE *FileIn; // qui pointe déjà sur le bon fichier temp.txt (partie réalisée ailleurs dans le code)
/* Fonction qui lit un fichier et trie les données comme convenu */ void Triage(FILE *FileOut, char balise[]) { char *str; int n=150; str = (char *)malloc(sizeof(char)*n); fgets(str,n,FileIn);
while (strcmp(str,balise) != 0) { fgets(str,100,FileIn); printf("%s\n",str); } while (strcmp(str,BaliseSuccess) != 0) { fputs(str,FileOut); fgets(str,100,FileIn); printf("%s\n",str); } }
/* DANS LE MAIN */ FILE *Day; FILE *Week; FILE *AllTime; // tous pointent vers le bon fichier a l aide de fopen()
Triage(Day,BaliseDay); Triage(Week,BaliseWeek); Triage(AllTime,BaliseAll);
|
|
dimanche 9 novembre 2003 à 15:07:41 |
Re : Sous win32 & Dev-C++, Problème avec fputs()

FoLKeN91
|
en effet le ptit bout de code que j'ai mis en topic marche bien, c'est pour ca que je montre toute la fonction. montrer toute la fonction en tout cas je vous remercie pour votre aide, j'en ai marre d'etre bloqué sur une telle erreur pour un prog assez simple :)
|
|
dimanche 9 novembre 2003 à 15:10:19 |
Re : Sous win32 & Dev-C++, Problème avec fputs()

aardman
|
Salut, Comment ouvres tu les fichiers ? enfin en quel mode ("w", "a", etc..). A mon avis le prob vient de la.
|
|
dimanche 9 novembre 2003 à 15:19:19 |
Re : Sous win32 & Dev-C++, Problème avec fputs()

FoLKeN91
|
FILE *FileIn;
int CreatesFile(FILE *fin, char *filename, char *MessageErreur) { fin = fopen(filename, "w+"); if ( fin == NULL ) { printf("%s\n",filename); MessageErreur = (char *) malloc(sizeof(char) * 36); strcpy(MessageErreur,"Ecriture impossible dans ce fichier"); ErreurProg(MessageErreur); } return 0; }
/* DANS LE MAIN */ FILE *Day; FILE *Week; FILE *AllTime; char *MessageErreur; char *filename;
/* Ouvre FileIn => temp.txt FileIn = fopen("temp.txt", "r"); if ( FileIn == NULL ) { MessageErreur = (char *) malloc(sizeof(char) * 40); strcpy(MessageErreur,"Impossible d'ouvrir le fichier temp.txt"); ErreurProg(MessageErreur); }
// fais le tri de DAY filename = (char *)malloc(sizeof(char)*8); strcpy(filename,"day.txt"); CreatesFile(Day,filename,MessageErreur); Triage(Day,BaliseDay); free(filename); // fais le tri de WEEK filename = (char *)malloc(sizeof(char)*9); strcpy(filename,"week.txt"); CreatesFile(Week,filename,MessageErreur); Triage(Week,BaliseWeek); free(filename); // fais le tri de ALLTIME filename = (char *)malloc(sizeof(char)*12); strcpy(filename,"alltime.txt"); CreatesFile(AllTime,filename,MessageErreur); Triage(AllTime,BaliseAll); free(filename);
// PS: j'ai aussi essayé avec "w" mais cela revient au même, il faut savoir que seul temp.txt existe initiallement, il faut créer les 3 autres fichiers, cad day.txt week.txt all.txt
|
|
dimanche 9 novembre 2003 à 15:50:27 |
Re : Sous win32 & Dev-C++, Problème avec fputs()

aardman
|
Salut, Dans ta fonction CreatesFile(...): Tu ne modifie pas ce qui est pointé par fin, mais directement fin. Il faut donc passer un pointeur vers fin pour etre capable de le modifier dans ta fonction. Mais comme fin est deja un pointeur, il faut passer un pointeur sur pointeur en param dans ta fonction CreatesFile(...). Le descripteur fin sera invalide, voila pourquoi fputs et fprintf ne fonctionnaient pas.
Sinon autre probleme: while (strcmp(str,balise) != 0)
Cette condition sera VRAI lorsque les chaines str et balise sera differentes, c'est bien ce que tu veux ?
|
|
Cette discussion est classée dans : str, char, dev, fputs, fileout
Répondre à ce message
Sujets en rapport avec ce message
HELP! DEV-C++ et Dll [ par couriousous ]
HEllo!Comment on crée une Dll que l'on peut inclure dans Visual Basic avec dev-c++??? au départ j'ai une fonction char * mafonction(char *) et je veux
Extraire une chaine de caractère en retirant les espaces... [ par Fituza ]
Bonsoir,Je pose ici une question qui doit paraître évident pour la plupart d'entre vous mais enfin... voici le programme de base:_____________________
Pb avec l'assembleur dev-cpp [ par 6co ]
Voici une source vue sur cppfrance et corrigée pour l'assembleur de Dev-Cpp#include #include #include #pragma inlineusing namespace std;int main(void)
pb compilation (dev-C++) [ par levetot ]
Tout mon problème est dans le titre...J'utilise la dernière version de dev-C++,(4.9...) et mon programme compilait nickel jusqu'à que j'utilise un tab
string.h, c_str() & char* [ par MyXiLo ]
Bonjour,Il y a un petit quelque chose que je ne comprends pas avec les std::string de string.hstd::string Pouet="LALALALa";pr
Comment free un char *** ? [ par kaervas ]
Bonjour, j'ai un probleme pour free un char ***,pour le char ** j'utilisais cette fonction (qui a priori marche):void dfree(char **str){ int i
Caracteres accentués [ par sprere16 ]
slt,voila mon prob, je voudrai Convertir une chaine de caracteres en une autre non accentués, mais a chaque fois mon code il me donne la meme erreur.v
Arbre Binaire. Probleme de concatenation [ par YnOThAr ]
Bonjour tout le monde ! La fin de l'année arrive et avec elle vient la fin des projets...généralement inachevés. En ce moment je travail sur la compre
petit problême de chaine [ par Cphil51 ]
Je débute en C++ et j'ai un petit problême avec mon code. J'ai créé une fonction qui prend en argument une chaine et un entier et qui retourne les n p
Comment lire un Char array ligne par ligne et le modifier? [ par fcoutel ]
Bonjour!J'ai cree un char array dans un autre program qui contient des info "encryptees" static char tcl_script[] = "«¨íðéåøäí¦üã\n" "«¨Ìíåçæûüúéüíû¨
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|