chercher une chaine de caractere dans un fichier texte

chercher une chaine de caractere dans un fichier texte - C - Programmation

Marsh Posté le 24-05-2004 à 13:46:49    

Bonjour,
Je voulais savoir si il y avait une fonction pour chercher une expression dans un texte comme la commande unix "grep" ou tout autre solution.
Par avance merci

Reply

Marsh Posté le 24-05-2004 à 13:46:49   

Reply

Marsh Posté le 24-05-2004 à 13:53:06    

tu veut dire chercher une sous chaine dans une chaine ?
utilise strstr ou strtok


Message édité par Joel F le 24-05-2004 à 13:53:17
Reply

Marsh Posté le 24-05-2004 à 13:54:14    

pas strtok, cai mal :o

Reply

Marsh Posté le 24-05-2004 à 13:54:32    

Taz a écrit :

pas strtok, cai mal :o


 
ah ? esplikation ?

Reply

Marsh Posté le 24-05-2004 à 14:04:49    

c'est pas réentrant, ça fout en l'air la chaine que tu lui passes

Reply

Marsh Posté le 24-05-2004 à 14:07:38    

si je fais :

Code :
  1. strstr(chaine, fichier)


J'obtiens quoi en sortie ?

Reply

Marsh Posté le 24-05-2004 à 14:08:28    

un pointeur sur RTFM

Reply

Marsh Posté le 24-05-2004 à 14:53:19    

:non:  :non:  
c'est un pointeur sur le début de la chaine ... au moins ca m'a permis de savoir ce que voulait dire RTFM  :D


Message édité par mirascheat le 24-05-2004 à 14:53:36
Reply

Marsh Posté le 24-05-2004 à 15:07:31    

j'ai trouvé pleins d'exemples avec une sous chaine dans une chaine mais pas d'exemple d'utilisation d'une chaine dans un fichier texte ...

Reply

Marsh Posté le 24-05-2004 à 15:10:46    

on te dit que tu peux pas le faire directement :o faut d'abord que tu charges en mémoire, ensuite que tu cherches

Reply

Marsh Posté le 24-05-2004 à 15:10:46   

Reply

Marsh Posté le 24-05-2004 à 15:13:15    

j'ai essayé ca mais ca ne semble pas marcher :

Code :
  1. FILE* fichier;
  2.     FILE* fichier2;
  3.     char* ptr;
  4.     fichier = fopen("./txt.csv","r" );
  5.     fichier2 = fopen("./out.csv","a" );
  6.     ptr = strstr(fichier, chaine);
  7.     fwrite((void*)ptr,1,strlen(ptr),fichier2);
  8.     fclose(fichier);
  9.     fclose(fichier2);

Reply

Marsh Posté le 24-05-2004 à 15:16:17    

tu comprends ce qu'on te dis ou pas ?

Reply

Marsh Posté le 24-05-2004 à 15:20:07    

je pensais maintenant j'ai des doutes :(

Reply

Marsh Posté le 24-05-2004 à 15:22:59    

CHARGE LE FICHIER EN MÉMOIRE : d'un coup ou ligne par ligne

Reply

Marsh Posté le 24-05-2004 à 15:29:35    

ca va pas faire un peu beaucoup de charger 25000 lignes d'un coup ?
Désolé pour mes questions mais je suis vraiment nOOb

Reply

Marsh Posté le 24-05-2004 à 15:32:37    

pas de pb, fichier mappé par example

Reply

Marsh Posté le 24-05-2004 à 15:50:27    

je suis désolé mais je ne vois pas comment charger un fichier en mémoire :(

Reply

Marsh Posté le 24-05-2004 à 15:58:00    

avec ça tu dois pouvoir lire ligne par ligne, mets la taille n > à la taille max d'une ligne, dimensionne le buffer string à n caracter.
et tu boucle là dessus j'usqu'à recevoir NULL.
char *fgets(  
   char *string,
   int n,
   FILE *stream  
);


Message édité par cricri_ le 24-05-2004 à 16:05:31
Reply

Marsh Posté le 24-05-2004 à 16:02:48    

tu le lis .|

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed