OVH Cloud OVH Cloud

ouvrir 2 fichiers sorties

1 réponse
Avatar
yaourtOfruit218
Bonjour,

Je ne sais pas si je suis sur le bon forum. Si non dites le moi !!

Je programme avec dev-c++ et travaille sous Win98 et Win2K.

J'ai créé un programme qui écrit des variables dans un fichier
(output.rtf) à partir d'un premier fichier (lettre-type:input.rtf)
puis l'ouvre avec le traitement de texte (chez moi avec word).
Je voudrais faire en sorte que lorsque le fichier est déjà ouvert le
programme enregistre le fichier de sortie sous un autre nom
(output1.rtf) et l'ouvre également. Mais ça ne marche pas... J'ai
essayé en fermant output.rtf [fclose(fOutput)] mais j'ai alors une
erreur système. Sans fclose le 2ème fichier s'ouvre mais est vide.

Où est ce que je me plante ? Merci à tous.

Voici le programme :

int main(int argc, char *argv[])
{
FILE *fInput, *fOutput;
char essai[]="essai";
int lettre;
int b;
char FichOut[20];
strcpy(FichOut,"output.rtf");

if ((fInput=fopen("input.rtf", "r"))== NULL)
MessageBox (NULL, "Erreur : impossible d'ouvrir input.rtf" ,
"Erreur", 0 + MB_ICONHAND + MB_SYSTEMMODAL);
else if ((fOutput=fopen(FichOut, "w")) == NULL)
{
MessageBox (NULL, "Erreur : impossible d'ouvrir output.rtf" ,
"Erreur", 0 + MB_ICONHAND + MB_SYSTEMMODAL);

// fclose(fOuput); créé une erreur système

strcpy(FichOut,"output1.rtf");
fOutput=fopen(FichOut, "w");
}
else
{
while ((lettre = fgetc(fInput)) != EOF)
{ if (lettre == '$')
{ b=fgetc(fInput);

if (b == '1') fputs(essai, fOutput);
if (b == '2') fputs(essai, fOutput);
if (b == '3') fputs(essai, fOutput);
if (b == '4') fputs(essai, fOutput);
if (b == '5') fputs(essai, fOutput);
if (b == '6') fputs(essai, fOutput);
if (b == '7') fputs(essai, fOutput);
if (b == '8') fputs(essai, fOutput);
if (b == 'b') fputs(essai, fOutput);
if (b == 'c') fputs(essai, fOutput);
if (b == 'd') fputs(essai, fOutput);
if (b == 'e') fputs(essai, fOutput);
}
else fputc(lettre, fOutput);

}

fclose(fInput);
fclose(fOutput);
}

ShellExecute(NULL, "open", FichOut, NULL, NULL, SW_SHOWNORMAL);

return 0;
}

1 réponse

Avatar
yaourtOfruit218
wrote in message news:...

Bon ben désolé,

J'avais essayé une mauvaise version du fichier. Le suivant fonctionne.
Autant pour moi. (le yaourt est faisandé).

int main(int argc, char *argv[])
{
FILE *fInput, *fOutput;
char essai[]="essai";
int lettre;
int b;
char FichOut[20];
strcpy(FichOut,"output.rtf");

if ((fInput=fopen("input.rtf", "r"))== NULL)
MessageBox (NULL, "Erreur : impossible d'ouvrir input.rtf" ,
"Erreur", 0 + MB_ICONHAND + MB_SYSTEMMODAL);
else if ((fOutput=fopen(FichOut, "w")) == NULL)
{
MessageBox (NULL, "Erreur : impossible d'ouvrir output.rtf" ,
"Erreur", 0 + MB_ICONHAND + MB_SYSTEMMODAL);
strcpy(FichOut,"output1.rtf");
fOutput=fopen(FichOut, "w");
while ((lettre = fgetc(fInput)) != EOF)
{ if (lettre == '$')
{ b=fgetc(fInput);

if (b == '1') fputs(essai, fOutput);
if (b == '2') fputs(essai, fOutput);
if (b == '3') fputs(essai, fOutput);
if (b == '4') fputs(essai, fOutput);
if (b == '5') fputs(essai, fOutput);
if (b == '6') fputs(essai, fOutput);
if (b == '7') fputs(essai, fOutput);
if (b == '8') fputs(essai, fOutput);
if (b == 'b') fputs(essai, fOutput);
if (b == 'c') fputs(essai, fOutput);
if (b == 'd') fputs(essai, fOutput);
if (b == 'e') fputs(essai, fOutput);
}
else fputc(lettre, fOutput);

}

fclose(fInput);
fclose(fOutput);

}
else
{
while ((lettre = fgetc(fInput)) != EOF)
{ if (lettre == '$')
{ b=fgetc(fInput);

if (b == '1') fputs(essai, fOutput);
if (b == '2') fputs(essai, fOutput);
if (b == '3') fputs(essai, fOutput);
if (b == '4') fputs(essai, fOutput);
if (b == '5') fputs(essai, fOutput);
if (b == '6') fputs(essai, fOutput);
if (b == '7') fputs(essai, fOutput);
if (b == '8') fputs(essai, fOutput);
if (b == 'b') fputs(essai, fOutput);
if (b == 'c') fputs(essai, fOutput);
if (b == 'd') fputs(essai, fOutput);
if (b == 'e') fputs(essai, fOutput);
}
else fputc(lettre, fOutput);

}

fclose(fInput);
fclose(fOutput);
}

ShellExecute(NULL, "open", FichOut, NULL, NULL, SW_SHOWNORMAL);

return 0;
}