begin process at 2012 05 30 14:34:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

programme en C


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

programme en C

mardi 22 mai 2007 à 14:46:43 | programme en C

rosco91

bonjour, cela fait deux jour que je cherche un programme qui me permettra de lire plusieur fichiers textes existants dans un dossier. J'ai un programme mais qui lit un seul fichier texte dans le dossier, ensuite je lis le fichier trouvé, puis en fonction de ce qu'il y a écrit, je réécris dans un autre fichier texte soit oui ou soit non.

#include <stdio.h>
#include <string.h>
#include<conio.h>
#include <stdlib.h>

FILE* lefichier1;
char mot[100]="Application terminee avec succes",file_t[150]="C:/yoyo/fichier1.txt",newtext[10000];

//Fonction d'entrée du mot recherché
int mot_recherche()
{
printf("%c",mot);

return 0;
}

//Fonction d'entrée du chemin du fichier
int file_c()
{
printf("> Le chemin d'acces du fichier texte dans C:/ \n",file_t);

return 0;
}

//Fonction principale
main()
{
FILE* lefichier1;
FILE *file;
char s_read[100];
int l_mot=0,l_file=0,ref=0,t,b,n,decal=0;

//Entrée du chemin du fichier
file_c();

 //Chemin du fichier trop long
 if(strlen(file_t)>150)
 {
 puts("\n> Chemin du fichier trop long : ERREUR");
 puts("> Appuyez sur une touche pour continuer...");
 getch();
 main();
 }

//Ouverture en BINAIRE
file=fopen(file_t,"rb");
 //Erreur d'ouverture
 if (file==NULL)
 {
 puts("\n> Impossible d'ouvrir le fichier : ERREUR");
 puts("> Appuyez sur une touche pour continuer...");
 getch();
 //On relance alors la fonction principale
 main();
 }
 //Si l'ouverture a réussi
 else
 {
  //Il s'agit ici de compter combien d'octets contient le fichier
  //Un caractère étant codé sur 1 octet on aura donc le nombre de caractères du fichier
  //Le pointeur est initialement au début du fichier
  //Tant que l'on atteint pas la fin du fichier,
  //On place dans n un bloc du fichier de la taille d'un entier et on incrémente l_file
  //Le pointeur avance ainsi à chaque tour de la taille d'un entier (4 octets)
  //Il faudra donc multiplier l_file par 4 pour avoir le nombre d'octets et non de groupes de 4 octets
  while(!feof(file))
  {
  n=getw(file);
  l_file++;
  }
  //On multiplie par 4 pour obtenir le nombre d'octets
  l_file=l_file*4;
  //On ferme
  fclose(file);
  //Ouverture en ASCII
  file=fopen(file_t,"r");
  printf ("> Fichier trouv%c (%d caract%cres) : OK",130,l_file,138);
 }

//Entrée du mot recherché
mot_recherche();
//Longueur du mot
l_mot=strlen(mot);
//Erreur si la longueur du mot est nulle
 if ((!l_mot)||(l_mot>100))
 {
 puts("\n> Mot incorrect (longueur nulle ou > 100) : ERREUR");
 puts("> Appuyez sur une touche pour continuer...");
 getch();
 main();
 }

 for (t=0;t<=(l_file-l_mot);t++)
 {
 //On place le pointeur à la position t (initialement nulle puis incrémentée)
 fseek(file,t,0);
 //On récupère l_mot caractères à partir de cette position
 //(autant de caractères que de caractères dans le mot)
 //Attention, le deuxième argument est 'l_mot+1' pour récupérer l_mot caractères !
 fgets(s_read,l_mot+1,file);
  //Si les chaînes mot et s_read sont identiques
  if(!(strcmp(s_read,mot)))
  {
  //On incrémente alors ref (qui contient le nombre de chaînes identiques trouvées)
  ref++;
  //Dans newtext, on place un symbole spécial juste avant le mot
  //Le pointeur de newtext sera en avance sur le pointeur de file à cause de ce symbole
  //C'est pourquoi on compense celà par l'entier decal incrémenté à chaque introduction du caractère spécial
  //*(newtext+t+decal)=2; -> caractère de code ASCII = 2
  *(newtext+t+decal)=2;
   //On place après le symbole spécial un par un les caractères de s_read dans newtext
   for (b=0;b<l_mot;b++)
   {
   *(newtext+t+decal+1+b)=*(s_read+b);
    }  
   decal=decal+1;
                
lefichier1=fopen  ("lefichier1.txt", "a+");
                 fprintf(lefichier1,"---------------------------------\n");
                 fprintf(lefichier1,"Lecture des fichiers logs\n");
                 fprintf(lefichier1,"Module imp/Exp Art\n");
                 fprintf(lefichier1,"---------------------------------\n");
                 fprintf (lefichier1,"%s OUI\n");
                 fflush(lefichier1);
                 fclose(lefichier1);
                        
system("start lefichier1.txt");  
                       
    return 0;         
    }
   else
  {
   //Si les chaînes sont diffèrentes, on recopie dans newtext
   //Et celà sans incrémenter decal !
   for (b=0;b<l_mot;b++)
   {
   *(newtext+t+decal+b)=*(s_read+b);
   }
 }
}

lefichier1=fopen  ("lefichier1.txt", "a+");
                 fprintf(lefichier1,"--------------------------------\n");
                 fprintf(lefichier1,"Lecture des fichiers logs\n");
                 fprintf(lefichier1,"Module imp/Exp Art\n");
                 fprintf(lefichier1,"--------------------------------\n");
                 fprintf (lefichier1,"%s NON \n");
                 fflush(lefichier1);
                 fclose(lefichier1);
                
system("start lefichier1.txt");
getch();
}


Si quelqu' un connait mon problème, je suis peneur.
Merci

mercredi 23 mai 2007 à 22:38:10 | Re : programme en C

Matt67

Réponse acceptée !
Bonsoir,

Essaye de poster une source qui compile parce que là, y a du boulot...

Matt...
jeudi 24 mai 2007 à 08:35:39 | Re : programme en C

rosco91

Réponse acceptée !
mon programme se compile trés bien!!!
il faut faire attention à chaque paramètre: le nom du dossier et du fichier.
Parce que mon source fonctionne trés bien.
jeudi 24 mai 2007 à 22:44:57 | Re : programme en C

Matt67

Réponse acceptée !
Bonsoir,

Déja include <conio.h>, je ne connais pas, cela sert a quoi ?
donc je le vire et pour les getch, je mets getchar à la place (standard)

puis pour les lignes suivantes, mon compilateur tousse :
printf("> Le chemin d'acces du fichier texte dans C:/ \n",file_t);
main()

fprintf (lefichier1,"%s OUI\n");

et quand je vois que tu fais appel au main(), là c'est moi qui tousse...
et plein d'autre chose.
Comment tu fais pour recuperer le chemin du fichier recherché ainsi que le mot ?
je maintiens, y a du boulot...

Matt...
vendredi 25 mai 2007 à 09:20:18 | Re : programme en C

rosco91

Réponse acceptée !

Voici mon programme arrangé, mais je ne comprends pas pourquoi il ne distingue plus les phrases lorsqu'il va les lire dans leur fichier. [getch ();] me sert à maintenir l'écran DOS. Je pense que mon problème vient du faite j'ai mélangé du C et du C++. Je sais pas si cela est possible?!!
maintenant j'aimerais savoir ce que tu en penses Matt67.
 
#include <stdio.h>
#include <string.h>
#include<conio.h>
#include <stdlib.h>
#include<time.h>
#include <iostream>
#include <fstream>
#include <string>

using namespace std ;

#define TAILLE_BUFFER 200


FILE* lefichier1;
char mot[100]="Application terminee avec succes",file_t[150]="C:/Adresses.txt",newtext[10000];
char ligne;

//Fonction d'entrée du mot recherché
int mot_recherche()
{
return 0;
}

//Fonction d'entrée du chemin du fichier
int file_c()
{
return 0;
}

//Fonction d'entrée du chemin du fichier1
int file_c1()
{
return 0;
}

//Fonction principale
main()
{
  FILE* lefichier1;
  FILE *file;
  FILE *file1;
  char s_read[100];
  int l_mot=0,l_file=0,l_file1=0,ref=0,t,b,n,decal=0;


  //Entrée du chemin du fichier
  file_c();

  //Ouverture en BINAIRE
  file=fopen(file_t,"rb");
  //Erreur d'ouverture
     if (file==NULL)
     {
       printf("\n> Impossible d'ouvrir le fichier : ERREUR");
       getch();
     }
      //Si l'ouverture a réussi
   else
     {
          //Il s'agit ici de compter combien d'octets contient le fichier
          //Un caractère étant codé sur 1 octet on aura donc le nombre de caractères du fichier
           //Le pointeur est initialement au début du fichier
          //Tant que l'on atteint pas la fin du fichier,
          //On place dans n un bloc du fichier de la taille d'un entier et on incrémente l_file
          //Le pointeur avance ainsi à chaque tour de la taille d'un entier (4 octets)
          //Il faudra donc multiplier l_file par 4 pour avoir le nombre d'octets et non de groupes de 4 octets
         while(!feof(file))
          {
            n=getw(file);
            l_file++;
           }
 
             //Ouverture en ASCII
             file=fopen(file_t,"r");
             printf ("> Fichier Adresse.txt trouver \n ");
             fclose(file);
             getch();
      }

///////////////////////////////////////////////////////////////////////////////
            char ligne[TAILLE_BUFFER + 2];
            fstream MonFic (file_t);
              if (! MonFic.is_open())
               {
              cout << "impossible d'ouvrir le fichier"  << endl;
                 return 1;
               }
                while (! MonFic.eof())
                 { 
              MonFic.getline (ligne, TAILLE_BUFFER + 2);
                 int len = strlen(ligne);
  
//////////////////////////////////////////////////////////////////////////////
  
                    file_c1();
                      file1=fopen(ligne,"r");
                       if (file1==NULL)
                        {
                          printf("\n> Impossible d'ouvrir %s ",ligne);
                          getchar();
                        }
                       else
                        {
                          while(!feof(file1))
                            {
                              n=getw(file1);
                               l_file1++;
                            }
                               file1=fopen(ligne,"r");
                               printf ("> Fichier trouv%c (%d caract%cres) : OK",130,l_file1,138);
                               printf ("> COUCOU \n ");
              
///////////////////////////////////////////////////////////////////////////////  

                                  //Entrée du mot recherché
                               mot_recherche();
                                   //Longueur du mot
                               l_mot=strlen(mot);  
  
                               for (t=0;t<=(l_file-l_mot);t++)
                                {
                                       //On place le pointeur à la position t (initialement nulle puis incrémentée)
                                  fseek(file1,t,0);
                                       //On récupère l_mot caractères à partir de cette position
                                       //(autant de caractères que de caractères dans le mot)
                                       //Attention, le deuxième argument est 'l_mot+1' pour récupérer l_mot caractères !
                                  fgets(s_read,l_mot+1,file);
                                      //Si les chaînes mot et s_read sont identiques
                                    if(!(strcmp(s_read,mot)))
                                    {
                                         //On incrémente alors ref (qui contient le nombre de chaînes identiques trouvées)
                                      ref++;
                                         //Dans newtext, on place un symbole spécial juste avant le mot
                                         //Le pointeur de newtext sera en avance sur le pointeur de file à cause de ce symbole
                                         //C'est pourquoi on compense celà par l'entier decal incrémenté à chaque introduction du caractère spécial
                                         //*(newtext+t+decal)=2; -> caractère de code ASCII = 2
                                      *(newtext+t+decal)=2;
                                          //On place après le symbole spécial un par un les caractères de s_read dans newtext
                                         for (b=0;b<l_mot;b++)
                                          {
                                            *(newtext+t+decal+1+b)=*(s_read+b);
                                          }  
                                           decal=decal+1;
 
                                           time_t temps_act;
                                           time(&temps_act);  
                                           lefichier1=fopen  ("lefichier1.txt", "a+");  //création d'un fichier txt nommé lefchier1
                                           fprintf(lefichier1,"\n-------------------------\n"); //ce qu'il y a écrit dans le fichier txt
                                           fprintf(lefichier1,"Module imp/Exp Art\n");
                                           fprintf(lefichier1,"-------------------------\n");
                                           fprintf (lefichier1,"%s = OUI %s \n",ligne,ctime(&temps_act));
                                           fflush(lefichier1);
                                           fclose(lefichier1);
                                           system ("cls");
                                           system("start lefichier1.txt"); //ouverture automatique du fichier txt
                                           return 0;         
                                    }
                                  else
                                   {
                                         //Si les chaînes sont diffèrentes, on recopie dans newtext
                                         //Et celà sans incrémenter decal !
                                      for (b=0;b<l_mot;b++)
                                       {
                                         *(newtext+t+decal+b)=*(s_read+b);
                                       }
                                   }
                            }
                     }    

                                       time_t temps_act;
                                       time(&temps_act);
                                       lefichier1=fopen  ("lefichier1.txt", "a+");  //création d'un fichier txt nommé lefchier1
                                       fprintf(lefichier1,"\n------------------------\n");//ce qu'il y a écrit dans le fichier txt
                                       fprintf(lefichier1,"Module imp/Exp Art\n");
                                       fprintf(lefichier1,"----------------------\n");
                                       fprintf (lefichier1,"%s = NON  %s \n",ligne,ctime(&temps_act));
                                       fflush(lefichier1);
                                       fclose(lefichier1);
                                       system ("cls");               
                                       system("start lefichier1.txt");//ouverture automatique du fichier txt
                                       fclose(file1);

          }
getch();
}

 

 

mardi 29 mai 2007 à 21:23:07 | Re : programme en C

Matt67

Réponse acceptée !
Bonsoir,

Effectivement, soit tu fais du c, soit du c++, faut choisir...

Tu veux faire quoi exactement, tu as un mot et tu veux savoir combien il y a occurence de ce mot dans un fichier ? et ecrire, je ne sais quoi dans un deuxieme fichier.
Quelle est la taille de tes fichiers en entrée (environ) ?

Essaye d'expliquer en bon français ce que tu veux faire.

Matt...
mercredi 30 mai 2007 à 08:53:41 | Re : programme en C

rosco91

Réponse acceptée !

Oui en effet il faut choisir entre le C et le C ++. Mais maintenant j'ai plus de problème mon programme fonctionne à présent. Tiens le voici :

#include <stdio.h>
#include <string.h>
#include<conio.h>
#include <stdlib.h> // atoi
#include <iostream>
#include <fstream>
using namespace std ;
#define TAILLE_BUFFER 200

 main()//Fonction principale
{
   
    char mot[150]="Application terminée avec succès",file_t[150]="C:/Adresses.txt",newtext[100];
    char ligne[TAILLE_BUFFER + 1];
    FILE* file;
    FILE* lefichier1;
    FILE* file1;
    char s_read[100];
    int l_mot=0,l_file=0,l_file1=500,ref=0,t,b=0,n,decal=0;
      
lefichier1=fopen ("lefichier1.txt", "a+");//création d'un fichier txt nommé lefchier1   
   
  file=fopen(file_t,"rb");//Ouverture en BINAIRE
 if (file==NULL) //Erreur d'ouverture
 {
 puts("\n> Impossible d'ouvrir le fichier : ERREUR");
 getch();
 }
 else //Si l'ouverture a réussi
 {
   while(!feof(file))
   {
     n=getw(file);
     l_file++;
   }
    fclose(file); //On ferme
    file=fopen(file_t,"r");//Ouverture en ASCII
    fclose(file);
 }
            fstream MonFic (file_t);
              if (! MonFic.is_open())
               {
              cout << "impossible d'ouvrir le fichier"  << endl;
                 return 1;
               }
                while (! MonFic.eof())
                 { 
              MonFic.getline (ligne, TAILLE_BUFFER + 1);
                 int len = strlen(ligne);                                   
                      file1=fopen(ligne,"r");//Ouverture en BINAIRE                    
                       if (file1==NULL)
                        {
                          printf("\n> Impossible d'ouvrir %s ",ligne);
                          getch();
                         
                        }
                       else
                        {                               
                          while(!feof(file1))
                           {               
                             n=getw(file1);
                             l_file1++;
                            }                             
                               fclose(file1);
                               file1=fopen(ligne,"r");
                               printf ("\n> Fichier %s ",ligne);
                               fprintf(lefichier1,"\n\n> Fichier %s ",ligne);
                               l_mot=strlen(mot);//Longueur du mot
                                for (t=0;t<=(l_file1-l_mot);t++)
                                 {
                                    fseek(file1,t,0);
                                     fgets(s_read,l_mot+1,file1);
                                       if(!(strcmp(s_read,mot)))
                                       {
                                          ref++;                  
                                          decal=decal+1;
                                          printf("=OUI");
                                           fprintf(lefichier1,"=OUI");
                                           fflush(lefichier1);     
                                      }                            
                                 }
                           }                                                                              
                   }   
fclose(file1);
fclose(lefichier1);
system("start lefichier1.txt");//ouverture automatique du fichier txt
getch();
}

mercredi 30 mai 2007 à 08:58:31 | Re : programme en C

rosco91

Réponse acceptée !
Maintenant j'aimerai savoir si c'est possible d'afficher la date de modification ou de création d'un fichier texte en C ou C++ ?? Je sais que l'on peut afficher la date et l'heure du système.


Cette discussion est classée dans : fichier, file, mot, lefichier1, fprintf


Répondre à ce message

Sujets en rapport avec ce message

Integration fonction C [ par metek ] Bonjour!!Voila j'ai une ptite question sur les API!!!J'ai fait un petit programme qui liste un fichier texte cherche un mot entré et recupere le reste Probleme d'ecriture et copie fichier texte [ par metek ] SalutMon but est d'etudier un fichier txt de rechercher un mot,le localiser et enfin de copier le rest de la ligne(donc les mots qui le suivent sur la boite de dialogue en C [ par benhamid ] Bonjour, J'ai quelque problème en C, pouvez vous m'aider svp.J'ai des fonctions C suivantes: lecturefichier(FILE * f1) qui lit le fichier f1calcul( Fi Fichier include "glut.h" [ par Ben0007 ] Hello,J'obtiens ce message d'erreur en compilant un exemple de programme trouvé sur ce site:"fatal error C1083: Cannot open include file: 'gl/glut.h': Problème avec ifstream [ par slashparof ] Voilà mon problème:Je fais un prog en C++ qui est censé lire dans un fichier et trouver certaines information. Pour améliorer la lisibilité de mon cod prob avec nom de fichier. [ par kach23 ] bonjour, je debute etje réalise une acquisition de mesure avec builder.je souhaite que le nom du fichier ouvert a chaque acquisition soit different.vo GROS problème avec ' tellg() ' [ par Sanke ] Bonjour à tous, je poste ce message parce que je ne comprends pas ce qui se passe avec tellg() :je m'explique, je lis un fichier ligne à ligne dont vo mot de passe [ par jeromedu94 ] bonjour,J'aimerais savoir comment est ce qu'on fait pour mettre un mot de passe à un fichier.J'ai regardé quelques exemple de sources, mais j'ai pas r envoi fichier via socket [ par elanspeech ] Bonjour,J'ai fait un client/serveur, la communication se passe bien. cependant, je ne parviens pas a envoyer plusieurs fichiers a la suite avec la soc Fichiers .jpg [ par StevenJLMunn ] Bonjour à tous, je voudrais faire un crypteur de fichier .jpg.Pour faire cela je fais déja des essai il faut ke je puisse lire le fichier .jpg en mode


Nos sponsors


Sondage...

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 : 2,980 sec (3)

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