Code qui marche pas ...

Bonjour,

J'aurai besoin d'aide sur un petit code.

La fonction caract_speciaux ci dessous est supposé ouvrir un dossier qui contient plusieurs fichiers mail_1.txt, mail_3.txt, ..., mail_290.txt , appliquer l'instruction bash "sed -i.bak 's/=E9/é/g' NomDuFichier" qui remplace les =E9 par 'é' dans ces fichiers...mais quand j'exectue ca ne me fait rien du tout (et ca renvoie pas d'erreurs). :( je comprends pas d'ou vient le probleme.Est ce que queqluq un pourrait m'indiquer l'erreur ?
Merci

La fonction est la suivante:

int caract_speciaux(void){

int i;

FILE* f;

char NomDuFichier[255];
char tmp[255];

for(i=1;i<290;i++){

sprintf(NomDuFichier,"mail_%d.txt",i); // NomDuFichier <-- "mail_i.txt"

f=fopen("/...monchemin.../NomDuFichier","w+");

sprintf(tmp,"sed -i.bak 's/=E9/é/g' NomDuFichier");
system(tmp);

}
return 0;

}
Configuration: Linux
Firefox 2.0.0.14

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. si je comprend bien tu lance une commande system effectuant des modif dans le fichier passé en parametre ?

    pourquoi fais tu cela : sprintf(tmp,"sed -i.bak 's/=E9/é/g' NomDuFichier");

    ne serait-ce pas cela ? -> sprintf(tmp,"sed -i.bak 's/=E9/é/g' %s", NomDuFichier);

    et s'il existe encore un probleme peut etre est-ce du à d'eventuels verrou poser par ton programme en ecriture enfin regarde d'abord ce que je t'ai mis et reviens voir ce qu'il en ai...

    tchû