begin process at 2012 05 30 17:55:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Sous win32 & Dev-C++, Problème avec fputs()


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

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

Membre Club
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

Membre Club
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

Membre Club
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

Membre Club
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 ?


1 2

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" "«¨Ìíåçæûüúéüíû¨


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 3,650 sec (3)

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