Fichier Texte

Fichier Texte - C - Programmation

Marsh Posté le 09-08-2004 à 17:37:29    

Bonjour voila j'aimerai savoir comment peut t'on recuperer chaque ligne d'un fichier texte dans une chaine pour la tester merci !!!

Reply

Marsh Posté le 09-08-2004 à 17:37:29   

Reply

Marsh Posté le 09-08-2004 à 18:32:41    

cin.getline()


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-08-2004 à 18:32:48    

while(fgets(ligne, sizeof ligne, fichier))
{
}

Reply

Marsh Posté le 09-08-2004 à 18:36:28    

ah merde, sous-cat == C :pfff:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-08-2004 à 18:39:26    

Harkonnen a écrit :

ah merde, sous-cat == C :pfff:

et puis cin.getline c'est de la MERDE :o
std::istream & std::getline(std::istream &, std::string & ); :o

Reply

Marsh Posté le 09-08-2004 à 19:07:37    

Et pourquoi c'est de la merde ?
J'ai commencé une apli pour un client et ... faut que je regarde, je posterai ça du taf pour avis, ça me fait un peur ce que tu dis ...

Reply

Marsh Posté le 09-08-2004 à 19:14:46    

Cricri_ a écrit :

Et pourquoi c'est de la merde ?
J'ai commencé une apli pour un client et ... faut que je regarde, je posterai ça du taf pour avis, ça me fait un peur ce que tu dis ...


C'est toujours comme ca quand Taz parle  :whistle:
On remet en question ses études, et tutti quanti  :cry:

Reply

Marsh Posté le 09-08-2004 à 19:16:10    

Cricri_ a écrit :

Et pourquoi c'est de la merde ?
J'ai commencé une apli pour un client et ... faut que je regarde, je posterai ça du taf pour avis, ça me fait un peur ce que tu dis ...

parce que c'est des char* et que non seulement c'est pas sur, mais surtout tu te trimballes une saleté de limitation, tu dois toujours spécifier la taille maximale d'une ligne, ce qui est parfaitement stupide et d'un autre temps

Reply

Marsh Posté le 09-08-2004 à 19:52:52    

ok, je crois que je suis dedans là ... crotte ...
moi qui voulait faire un truc propre en C++, c'est raté ..
Merci.

Reply

Marsh Posté le 09-08-2004 à 20:47:57    

deja si tu utilise char * au lieu de std::string, tu joue pas la carte de la securité pour du c++

Reply

Marsh Posté le 09-08-2004 à 20:47:57   

Reply

Marsh Posté le 09-08-2004 à 20:58:06    

bas vi, mais char * est encore présent dans les streams ...

Reply

Marsh Posté le 09-08-2004 à 21:16:11    

et ?

Reply

Marsh Posté le 09-08-2004 à 21:32:56    

Et bien j'ai pris la fonction GetLine présente dans les streams, celle qui fonctionne avec des chars ...
Je pensais bêtement que c'est celle qu'il fallait utiliser.

Reply

Marsh Posté le 09-08-2004 à 21:34:03    

ça m'avait surpris de trouver du char * dans les streams, mais bon, je me suis dit qu'on ne devait pas pouvoir faire autrement ...

Reply

Marsh Posté le 10-08-2004 à 11:12:21    

merci mais j'ai l'impression que mon fichier texte n'est pas bien formater il doit manquer le caractere de fin de ligne c un fichier qui contient une branche de la BR obtenu par un reg export

Reply

Marsh Posté le 10-08-2004 à 12:26:31    

si il est tres bien formaté (sinon quand  tu le lirais avec un editeur il n'y aurais qu'une  seul ligne)
 
fais voir le code que tu utilise

Reply

Marsh Posté le 10-08-2004 à 12:57:32    

ben la bisarrement ca fonctionne alors que je n'ai rien changé dans mon code enfin LOL !!
voila je souhaite chercher une expression du type abcde=yfgh et prendre que le yfgh si je le trouve quelle fonction puis je utiliser

Reply

Marsh Posté le 10-08-2004 à 13:01:51    

strstr, strchr, strrchr... tu as tout cequ'il faut ici
 
http://www.cplusplus.com/ref/cstring/

Reply

Marsh Posté le 10-08-2004 à 13:02:21    

merci beaucoup

Reply

Marsh Posté le 10-08-2004 à 14:05:26    

J'ai un souci avec strstr
voila mon code qui se trouve dans une boucle
 
fgets(ligne,sizeof(ligne),fich)
res=strstr(ligne,"HKEY_CURRENT_USER\\Identities\\{" );
if(res)...
 
Or il ne trouve pas cette chaine de cractere alors qu'elle est bien presente
 

Reply

Marsh Posté le 10-08-2004 à 14:09:37    

Code :
  1. while( fgets( line, sizeof line, file ) )
  2. {
  3.     if( (sub_str = strstr ("HKEY_CURRENT_USER\\Identities\\{", line)) != NULL )
  4.     {
  5.         /* la chiane est presente */
  6.     }
  7. }

Reply

Marsh Posté le 10-08-2004 à 14:20:07    

c sur quand mettant les para dans le bon sens ca marche mieux LOL mais j'ai l'impression qu'il fait n'importe koi car j'incremente un compteur pour savoir le nombre d'itentité trouvé il affiche un nombre qui est superieur au nombre de ligne du fichier

Reply

Marsh Posté le 10-08-2004 à 14:24:26    

T'es sur ?
 

Code :
  1. while( fgets( line, sizeof line, file ) )
  2. {
  3.     ...
  4.     nb_lines++
  5. }
  6. /* nb_lines = nombre de lignes  dans le fichier  */

Reply

Marsh Posté le 10-08-2004 à 15:24:03    

ben oui je fait un test sur le strstr et j'ai un resultat incoherent

Reply

Marsh Posté le 10-08-2004 à 15:32:10    

c'est bizar, montre le code complet (on sait jamais)

Reply

Marsh Posté le 10-08-2004 à 16:23:31    

fgets(ligne,sizeof(ligne),fich)  
res=strstr(ligne,"HKEY_CURRENT_USER\\Identities\\{" );  
if(res)flag++;

Reply

Marsh Posté le 10-08-2004 à 16:27:56    

enfin avec la modif pour strstr lol

Reply

Marsh Posté le 10-08-2004 à 16:28:06    

ta inversé  les parametre de strstr et la tu compte seulement les lignes contenant la chaine "HKEY_CURRENT_USER\\Identities\\{"

Reply

Marsh Posté le 10-08-2004 à 18:19:34    

oui j'ai fait la rectif quand tu me l'avait dis mais c bien ce que je ve faire compter le nombre de ligne contenant cete chaine

Reply

Marsh Posté le 11-08-2004 à 09:08:32    

L'idée c de recopier la clef dans un autre fichier
voici une partie du code
 
while(fgets(ligne,sizeof(ligne),fich1)
  {
  if((res=strstr("[HKEY_CURRENT_USER\\Identities\\{" ))&& strlen(res)==67)fputs(res,fich2);
  }

Reply

Marsh Posté le 11-08-2004 à 09:21:56    

utilise strlen("[HKEY_CURRENT_USER\\Identities\\{" ) plutot qu'un nombre magique

Reply

Marsh Posté le 11-08-2004 à 09:45:33    

ca sort d'ou ca ?
 
strstr("[HKEY_CURRENT_USER\\Identities\\{" )

Reply

Marsh Posté le 11-08-2004 à 09:59:13    

g oublié le parametre ligne dans la fonction strstr


Message édité par mp75 le 11-08-2004 à 10:03:20
Reply

Marsh Posté le 11-08-2004 à 10:53:46    

le souci c que ca ne fonctionne pas

Reply

Marsh Posté le 11-08-2004 à 10:55:25    

je fais souvent ce genre de code et j'ai jamai eu de probleme
 
tu peux montrer le code entier stp ?

Reply

Marsh Posté le 11-08-2004 à 11:00:01    

et l'\n bordel :o

Reply

Marsh Posté le 11-08-2004 à 11:16:58    

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
FILE *fich1,fich2;
char *ligne,*res;
system("reg export HKEY_CURRENT_USER\\Identitites c:\\regbase.txt" );
fich1=fopen("c:\\regbase.txt","r" );
fich2=fopen("c:\\regnew.txt","w" );
while(fgets(ligne,sizeof(ligne),fich1))
    {
     if((res=strstr("[HKEY_CURRENT_USER\\Identities\\{" ))&& strlen(res)==67)fputs(res,fich2);  
    }
fclose(fich1);
fclose(fich2);
return 0;
}

Reply

Marsh Posté le 11-08-2004 à 11:24:24    

c'est quoi ce 67 ?
 
sinon bravo, t'as rien compris ni au pointeur, ni au tableau ...


Message édité par Taz le 11-08-2004 à 11:24:50
Reply

Marsh Posté le 11-08-2004 à 11:34:54    

ben le 67 c la longueur de la chaine qui commence par [HKEY...
Sinon pour les pointeurs et tableau je vois pas ce que tu ve dire

Reply

Marsh Posté le 11-08-2004 à 11:38:19    

ligne est un pointeur, tu n'alloue
sizeof(ligne) == taille du pointeur
 
ligne doit etre un tableau (char  ligne[N]) pour que sizeof ligne = N

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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