Probleme de lecture de fichier

Résolu
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006 - 13 nov. 2004 à 12:25
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 13 nov. 2004 à 16:30
Voila je programme sous MFC:
Je dois lire un fichier text sour cette forme:

0 2
bonjour
2 4
salut
4 6
meme avec des espaces

par exemple si i vaut 5 ,le programme me renvoit "meme avec des espaces"

Si vous voulez plus de details.
Merci pour toutes aides.

5 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
13 nov. 2004 à 16:30
Tu peux bien allouer 250ko d'un coup.

q = strchr(p, '\n');//position de \n
if(q)

si on n'a pas trouvé '\n' dans p, strchr renvoie p (c'est la fin du fichier)
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
13 nov. 2004 à 13:20
En gros u veux lire la (i+1)ème ligne
Tu mets ton fichier dans un buffer (éventuellemnt en plusieurs coups si c'est une gros fichier) et tu compte les '\n'.
Par exemple si le texte est dans un char* p

while(i)
{
  p = strchr(p, '\n');
  if(!p)
  {
  // indice trop grand
  }
  i--
}
p++;
q = strchr(p, '\n')
if(q)
*q = 0;

si je me suis pas trompé tu as le résultat dans p
0
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
13 nov. 2004 à 14:09
Je me suis mal exprimer

En fait je veux :comparer i

0 2
bonjour
2 4
salut
4 6
meme avec des espaces

<-- si i est entre le premier entier et le 2eme me renvoi le chaine de la ligne suivante sinon passe au suivant.

Merci
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
13 nov. 2004 à 15:26
D'accord, c'est vrai que tu t'étais mal exprimé, c'était difficile de deviner ce que tu voulais faire.
En supposant que le fichier est bien constitué:
while(p)
{
if(atoi(p) < i)
{
// trouvé
p = strchr(p, '\n') + 1;
q = strchr(p, '\n');
if(q)
*q = 0;
}

p = strchr(p, '\n');
if(!p)
{
// pas trouvé
}
p = strchr(p, '\n');
if(!p)
{
// pas trouvé
}
p++;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
13 nov. 2004 à 15:50
Merci, je comprend pas tous mais je vais cherchez la definition des fonctions.

while(p)
{
if(atoi(p) < i)
{
// trouvé
p = strchr(p, '\n') + 1;//renvoi la position de \n dans la ligne qui contient les entiers+1(equivaut a ce place au debut de la ligne suivante?)

q = strchr(p, '\n');//position de \n

if(q) / /je ne comprend pas
*q = 0;
}

p = strchr(p, '\n');
if(!p)
{
// pas trouvé
}
p = strchr(p, '\n');
if(!p)
{
// pas trouvé
}
p++;
}
Si mon fichier fait dans les 250ko , c'est beaucoup pour un buffer, au niveau performance?
je suis debutant en c/c++, Merci
0
Rejoignez-nous