GROS problème avec ' tellg() '

cs_Sanke Messages postés 3 Date d'inscription vendredi 26 septembre 2003 Statut Membre Dernière intervention 10 juillet 2007 - 9 févr. 2004 à 18:04
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 9 févr. 2004 à 20:21
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 voici une partie :

- fichier "Sample.ini" :
[Section1]
Key1=One1
Key2=Two1

[Section2]
Key1=One2
Key2=Two2

etc...

(Je veux pouvoir définir une sorte de classe pour fichier INI avec un certain nombre de fonction en C++)

et voici le code :

- fichier "main.cpp" :
#include
#include <fstream>
#include <conio.h>

using namespace std;

int main()
{
fstream file_r("Sample.ini", ios::in);
char* buffer;

long cursor = -1;

do
{
cursor = file_r.tellg();
cout << cursor << endl;
getch();
file_r >> buffer;
cout << buffer << endl;
}while(!file_r.eof());

file_r.close();
return 1;
}

donc normalement je devrait obtenir au niveau des valeurs de cursor quelque chose comme : 0, 10, 19, 28, 29, 39, 48, 57, etc...
Or là en fonction du nombre de ligne à la fin du sample.ini (j'ai aussi essayé avec des lignes vides '\n'), les valeurs de cursor augmente, la lecture du fichier se faisant du début vers la fin (enfin je crois :blush) !!!) je devrais obtenir la meme suite, or la je me retrouve avec des 0, 112, 121, etc... et les nombres variant avec la taille du fichier. J'avoue que je suis un peu perdu :sad) .

J'attends avec impatience vos réponses pour m'éclairer sur ce problème (en tout cas pour moi !) ou pour m'expliquer comment fonctionne vraiment tellg() parce qu'il n'y a pas beaucoup d'info sur lui sur le net !!!

Merci d'avance !

1 réponse

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 févr. 2004 à 20:21
pour commencer ton programme ne marche pas car tu n'as pas réservé de mémoire pour buffer
ecrit char buffer[256] à la place et tout ira bien
0
Rejoignez-nous