J'ai un enorme probleme je n'arrive pas a lire dans mon fichier
Voila la partie de mon programme.
Si quelqu'un peux m'aide.
Merci.
//ouverture du fichier source
FILE *OuverFichierSource(char *fichier)
{
FILE *fs;
if((fs = fopen(fichier,"rb")) == NULL)
{
printf("\nErreur: Impossible de lire le fichier %s \n",fichier);
system("PAUSE");
}
return fs;
}
//ouverture du fichier destinataire demande a la console
FILE *OuverFichierDest (char *fichier) /
{
FILE *fd;
if((fd = fopen(fichier,"wb")) == NULL)
printf("\nErreur: Impossible d'ecrire le fichier %s \n",fichier);
return fd;
}
//sert a creer un fichier tmp dans dans le repertoire
//destinataire ex: c:\MonDossier\destinataire.txt
// c:\MonDossier\TMP.tmp ->fichier tmp
char * EntierVersAlpha(char * Ch)
{
char *tmp= &Ch[0];
char *p = strrchr(tmp,'\\');
while(*p != '\\') p--;
*p=0;
Ch=strcat(tmp,"\\TMP.tmp");
return Ch;
}
//copie fichier source dans fichier destinataire
int CopieFichier(FILE *fs,FILE *fd)
{
int longueur;
char memoire[TAILLE];
char *fichTmp;
while(!feof(fs))
{
longueur = fread(memoire, 1, TAILLE, fs);
fwrite(memoire, 1, longueur, fd);
}
return 1;
}
//vide la chaine nvLigne voir fonction PremCarPos
char * VideChaine(char * Ch)
{
char * tmp = &Ch[0];
int n,l=0;
n = strlen(tmp);
while (l < n) *(tmp + l++) = 32;
return Ch;
}
//Recherche la position d'un mot dans le fichier destinataire
//un mot qu'on a introduit dans la console
// ICI EST LE PROBLEME IL NE VA PAS DANS LE FICHIER!!!!





















long PremCarPos (char *ch, FILE *f,long Depart)
{
char c,nvLigne [TAILLE];
int i=0,t,n;
char *l;
t=strlen(ch);//donne la longueur de la chaine rechercher
fseek(f,Depart,SEEK_SET);
while(! feof(f))
{
c=fgetc(f);//prend carc par carc et met
nvLigne[i]=c;//dans nvLigne
i++;
l=strstr(nvLigne,ch);//cherche le mot
n=strlen(nvLigne);//Donne la longeur
Depart=n-t-1;//Pour avoir la position du
if (l != NULL)//mot
{
VideChaine(nvLigne);
return (Depart);
}
}
return 0;
}
//change le mot dans le fichier et remplace par l'autre
//je na sais pas si ca fonctonne
void ModificationFichier (char *ch1,char *ch2,FILE *fd,FILE *ftmp)
{
int Lch1,Lch2;
int Depart;
char *memoir;
memoir=(char*)malloc(TAILLE);
Depart=0;
Lch1=strlen(ch1);
Lch2=strlen(ch2);
Depart=PremCarPos(ch1,fd,Depart);
do
{
fread(memoir,1,Depart,fd);
fwrite(memoir,1,Depart,ftmp);
fwrite(ch2,1,Lch2,ftmp);
Depart=Depart+Lch2;
Depart=PremCarPos(ch1,fd,Depart);
}
while(!feof(fd));
free(memoir);
return ;
}
//On doit rentrer la chaine comme ceci >chaine<
//Permet de retire les > <
int ChangeChaine (char *ch)
{
int y=0, i, j;
char *tmp;
y = strlen(ch);
if (ch[0]== 0 )
return 0;
if (ch[0]== 62 && ch[1]==60)//Si on rentre ><, on suprime le
{ //mot dans le fichier Destinataire
for(i=0;i<y;i++)
ch[i]=32;
}
else
{
j=0;
for (i=0; i<y; i++)
{
if ((ch[i]!=62) && (ch[i]!=60))
{
tmp[j] = ch[i];
j++;
}
}
for (i=0; i<j; i++)
ch[i] = tmp[i];
ch[i]='\0';
}
return 0;
}
main()
{
FILE *fs;
FILE *fd;
FILE *ftmp;
char fichier[256],destFichier[256],motRecherche [256],MotRemplacement[256];
char accord;
char *fichierTmp;
int fich,test,copFich;
do
{
printf("\nEntrez nom fichier source : ");
gets(fichier);
fs = OuverFichierSource(fichier);
printf("\nEntrez nom fichier destinataire : ");
gets(destFichier);
fd = OuverFichierDest(destFichier);
CopieFichier(fs,fd);
}
while(copFich==1);
fichierTmp=EntierVersAlpha(destFichier);//creation du
ftmp=fopen(fichierTmp,"wb");//fichier tmp
printf("\n\n");
printf("\nFormat de saisie ");
printf("\n--------------- ");
printf("\nLa chaine recherchee : >Chaine Recherchee<");
printf("\nLa chaine recherchee commence par : >Cha<>chee<");
printf("\nLa chaine de remplacement : >Nouvelle chaine<");
printf("\nPour supprimer la chaine : ><");
printf("\n\n");
printf("\nLes chaines recherchees peuvent contenir des caractère > et <");
printf("\nmais pas de paire <>");
printf("\n\n");
printf("\nPour sortir taper <ENTER> dans <chaine recherchee> et");
printf ("\n<chaine de remplacement>");
printf("\n\n");
do
{
do
{
printf("\nMot rechercher : ");
gets(motRecherche);
//test la chaine si test=TestChaine(motRecherche);
//elle est valide if(test == 1)
//les fonction :TestChaine, {
//ChaineRechValide ChaineRechValide(motRecherche);
//ne sont pas mise ChangeChaine (CHAINE.Chaine2);
ChangeChaine (CHAINE.Chaine1);
}
}
while(test==0);
ChangeChaine(motRecherche);
do
{
printf("\nMot de remplacement : ");
gets(MotRemplacement);
//test la chaine test=TestChaine(MotRemplacement);
}
while(test==0);
ChangeChaine(MotRemplacement);
printf ("Etes vous sur de la modification (o/n): ");
scanf("%c",&accord);
if (accord == 'o')
ModificationFichier(motRecherche,MotRemplacement,fd,ftmp);
}
while(motRecherche[0] != 0 && MotRemplacement[0]!= 0);
fclose(fs);
fclose(fd);
fclose(ftmp);
remove(destFichier);
rename(fichierTmp,destFichier);
return 0 ;