Accueil > Forum > > > > programme en C
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
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|