begin process at 2012 05 29 21:08:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

Problème de lecture fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de lecture fichier

mercredi 18 mai 2005 à 12:08:11 | Problème de lecture fichier

nach73

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 ;



Cette discussion est classée dans : fichier, printf, char, tmp, fd


Répondre à ce message

Sujets en rapport avec ce message

Debutant : ecrire et lire un fichier txt [ par manu ] Bonjour a tous.Je debute, aussi desole.... :)Je cherche donc a ecrire dans un fichier txt, puis a lire ce fichier ligne a ligne, faire un split / expl [debutant]attribution dun mot a une char et comparaison ... [ par DarkEbola ] en fait, jaurais aimé attribuer du texte a une charkke chose comme 500 ou 600 caracteres maximais jarrive pas a lui attribuer plus de 1 Charsuis-je pl Je cherche l'erreur [ par 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 CRYPTAGE !!! [ par megaman ] Voilà j'essai de faire un log de cryptage à l'aide de fonctions et procédure.Les fonctions et procédures :Une fonction qui retourne le nom de fichieru SOS manque d'inspiration [ par graall ] J'ai besoin de faire un petit programme (en mode console) qui demande à l'utilisateur de saisir le nom d'un fichier et ensuite, qui vérifie si ce fich ca plante et sa m'enerve [ par nach73 ] Bonjour je suis debutant j'essaie de copier un fichier source dans un fichier destinataire par des fonctions ci dessous.Mais seulement il me creer bie Aide pour enregistrement fichier en C [ par petit_mateo ] Voici mon code :#include #include #include int x(){   char ANCIEN[] = "resta.txt";   char NOUVEAU[] = "restb.txt";   FILE *INFILE, *OUTFILE;< Copier/coller de données contenue dans un fichier en C [ par petit_mateo ] Voici mon code :#include #include #include int x(){   char ANCIEN[] = "resta.txt";   char NOUVEAU[] = "restb.txt";   FILE *INFILE, *OUTFILE;< probleme de recherche dans un fichier [ par jekburn ] // Bonsoir, mon programme est un repertoire téléphonique, on peut rentré un nom et // un n° de tél.// les données s'incrivent bien dans le fichier, ma Problème avec la fonction read du C sous linux. [ par bouba ] Bonjour, j'ai un problème que je ne comprend pas avec la fonction read, le problème vient lorsque j'essai de lire 4 ocets à mettre dans un entier.J'es


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,966 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales