Je cherche l'erreur

Signaler
Messages postés
11
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
2 juin 2004
-
Messages postés
24
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
10 juin 2004
-
J'ai effectué un programme qui me permette d'écrire dans un fichier et je l'ai compilé. En le lançant, il m'envoie un message d'erreur mais je ne sais pas d'où vient mon erreur.

Voici le programme :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

int main(int argc, char *argv[])
{
FILE * MonFichier;
FILE * fichbis;
char* MaChaine;
char nom_fichier[45], lettre_erronee, lettre_changee;
int i;

printf ("Veuillez donner le nom du fichier a ouvrir : ");
scanf ("%s", nom_fichier);
MonFichier = fopen(nom_fichier, "r+");

printf ("\nLe texte contenu dans le fichier est:\n%s\n", MaChaine);
MaChaine = (char*)malloc(45*sizeof(char));
strcpy(MaChaine,"Il a enleve son poing... rien n'a ete gache !\n");

MonFichier = fopen("LeFichier.txt","w");
//pour afficher à l'écran:
printf("%s",MaChaine);
//pour mettre la chaine dans le fichier texte:
fprintf(MonFichier, MaChaine);

printf ("Quelle lettre voulez-vous changer ?\n");
scanf ("%c", lettre_erronee);

printf ("Tapez la nouvelle lettre : ");
scanf ("%c", lettre_changee);

for(i=0;i<strlen(MaChaine);i++)
{
if(MaChaine[i]==lettre_erronee)

MaChaine[i]=lettre_changee;
}

printf ("\nLe texte modifie est donc le suivant :\n%s\n", MaChaine);

if (fclose(MonFichier)==EOF)
{
printf("\nProblème de fermeture du fichier!\n");
}

fichbis= fopen("nouveau.txt","r+");

fputs(MaChaine, fichbis);

fclose (fichbis);

system("PAUSE");
return 0;
}

7 réponses

Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005

salut,

à première vue, tu ouvres deux fois un fichier ayant comme identifiant MonFichier.

a+
alain
Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005

ou, plus exactement, quand tu exécutes :

MonFichier = fopen("LeFichier.txt","w");

il y a déjà eu, 4 instructions plus haut :

MonFichier = fopen(nom_fichier, "r+");

et il n'a pas été refermé entre temps.

je pense que ça peut peut-être venir de là, mais il faudrait avoir le message d'erreur.

alain
Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005

de plus, la chaine :

"Il a enleve son poing... rien n'a ete gache !\n"

fait 46 caractères + le zéro final = 47 caractères, et tu n'alloues que 45 caractères.

alain
Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005

fprintf sans chaine de formatage :

fprintf(MonFichier, MaChaine);

il faut
fprintf(MonFichier, "%s", MaChaine);

a+
alain
Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005

fprintf sans chaine de formatage :

fprintf(MonFichier, MaChaine);

il faut
fprintf(MonFichier, "%s", MaChaine);

a+
alain
Messages postés
11
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
2 juin 2004

OK!
Bien reçu.

Je modifierai tout ceci.

Merci

@ +
Messages postés
24
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
10 juin 2004

Fais attention aussi à l'affichage que tu fais au tout début:
printf ("\nLe texte contenu dans le fichier est:\n%s\n", MaChaine);
A ce moment là, MaChaine n'est pas initialisée. Tu vas avoir un affichage mais pas un texte lisible!
Si tu veux afficher le contenu de ton fichier en passant par MaChaine, utilise fgets par exemple!
fegts(MaChaine,X,MonFichier)

@+
SHIRAH