Fichier Texte - C - Programmation
Marsh Posté le 09-08-2004 à 18:32:41
cin.getline()
Marsh Posté le 09-08-2004 à 18:36:28
ah merde, sous-cat == C
Marsh Posté le 09-08-2004 à 18:39:26
Harkonnen a écrit : ah merde, sous-cat == C |
et puis cin.getline c'est de la MERDE
std::istream & std::getline(std::istream &, std::string & );
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 ...
Marsh Posté le 09-08-2004 à 19:14:46
Cricri_ a écrit : Et pourquoi c'est de la merde ? |
C'est toujours comme ca quand Taz parle
On remet en question ses études, et tutti quanti
Marsh Posté le 09-08-2004 à 19:16:10
Cricri_ a écrit : Et pourquoi c'est de la merde ? |
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
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.
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++
Marsh Posté le 09-08-2004 à 20:58:06
bas vi, mais char * est encore présent dans les streams ...
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.
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 ...
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
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
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
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/
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
Marsh Posté le 10-08-2004 à 14:09:37
Code :
|
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
Marsh Posté le 10-08-2004 à 14:24:26
T'es sur ?
Code :
|
Marsh Posté le 10-08-2004 à 15:24:03
ben oui je fait un test sur le strstr et j'ai un resultat incoherent
Marsh Posté le 10-08-2004 à 16:23:31
fgets(ligne,sizeof(ligne),fich)
res=strstr(ligne,"HKEY_CURRENT_USER\\Identities\\{" );
if(res)flag++;
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\\{"
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
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);
}
Marsh Posté le 11-08-2004 à 09:21:56
utilise strlen("[HKEY_CURRENT_USER\\Identities\\{" ) plutot qu'un nombre magique
Marsh Posté le 11-08-2004 à 09:45:33
ca sort d'ou ca ?
strstr("[HKEY_CURRENT_USER\\Identities\\{" )
Marsh Posté le 11-08-2004 à 09:59:13
g oublié le parametre ligne dans la fonction strstr
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 ?
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;
}
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 ...
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
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
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 !!!