begin process at 2008 08 20 14:15:33
1 228 866 membres
232 nouveaux aujourd'hui
14 257 membres club

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 : Je cherche l'erreur [ Archives / Au secours ] (ScorpionTiti )

Je cherche l'erreur le 27/05/2004 21:24:39

ScorpionTiti

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;
}


Re : Je cherche l'erreur le 27/05/2004 21:34:27

alain34270
salut,

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

a+
alain

Re : Je cherche l'erreur le 27/05/2004 21:37:53

alain34270

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

Re : Je cherche l'erreur le 27/05/2004 21:44:08

alain34270
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

Re : Je cherche l'erreur le 27/05/2004 21:46:16

alain34270
fprintf sans chaine de formatage :

fprintf(MonFichier, MaChaine);

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

a+
alain

Re : Je cherche l'erreur le 27/05/2004 21:46:17

alain34270
fprintf sans chaine de formatage :

fprintf(MonFichier, MaChaine);

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

a+
alain

Re : Je cherche l'erreur le 27/05/2004 22:56:44

ScorpionTiti

OK!
Bien reçu.

Je modifierai tout ceci.

Merci

@ +

Re : Je cherche l'erreur le 28/05/2004 09:48:55

shirah3i
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


Classé sous : fichier, printf, char, lettre, machaine

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS