begin process at 2012 05 29 14:07:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

Position curseur dans un fichier texte [C++]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Position curseur dans un fichier texte [C++]

jeudi 12 août 2004 à 21:33:33 | Position curseur dans un fichier texte [C++]

MissSixty


Salut !

Je cherche à comprendre le bogue dans un programme tout simple qui me permet de récupérer la position du curseur (en nombres de lignes) en fin de fichier. Le nombre de lignes retournées par mon code est plutôt bizarre, il est de -9 !?!?! Alors qu'il devrait me retourner 35441 !?!

Est-ce que quelqu'un peut m'aider??? Si vous avez d'autres suggestions, n'hésitez pas!

Pour votre information le fichier toto.txt est composé de 35441 lignes dont chacune comprend 3 nombres décimaux espacés par un tab (la 35441ème ligne du fichier est vide).

Merci =)
_____________________

Voici mon code :

streampos nb_lignes;
ifstream fichier("toto.txt", ios::binary);
fichier.fseekg(0, ios::end);
nb_lignes = fichier.tellg() - sizeof(double);
fichier.close();
cout << "NB_LIGNES = " << nb_lignes << endl;

______________________
jeudi 12 août 2004 à 22:02:51 | Re : Position curseur dans un fichier texte [C++]

vecchio56

Administrateur CodeS-SourceS
tu dois avoir des gros doubles!
jeudi 12 août 2004 à 22:02:53 | Re : Position curseur dans un fichier texte [C++]

djl

le nombre de lignes dans un fichier binaire ?
jeudi 12 août 2004 à 22:39:26 | Re : Position curseur dans un fichier texte [C++]

MissSixty

Ouain... je viens de cogiter sur mon problème !!! Ça faisait aucun sens ! Finalement, voici le programme que j'ai ajouté à mon code.
C'est en code C, j'aurais préféré l'avoir en C++ pcq tout le reste de mon code est en C++, mais j'ai pas trouvé comment le modifier... L'important c'est que là, ça marche !!!

Si vous avez des suggestions pour transformer ce code en C++, je les attends avec impatience !!!

Merci =)

--------------------------
Voici le code :

int nb_lignes = 0;
char c;

FILE *fichier;
fichier = fopen("toto.txt", "r");

if (fichier == NULL)
{
cout << " Aucun fichier detecte ! " << endl;
exit(1);
}
else
{
do
{
c = fgetc(fichier);
if (c == '\n')
{
nb_lignes ++;
cout << nb_lignes << endl;
}
} while ( !feof(fichier) );
}
cout << " Nombre de lignes totales du fichier = " << nb_lignes << endl;
jeudi 12 août 2004 à 22:49:13 | Re : Position curseur dans un fichier texte [C++]

djl

while( (c = fgetc(fichier)) != EOF ) if(c == '\n') nb_lignes++;


et en c++

ifstream fichier( "toto.txt" );
while( fichier.good() ) if( fichier.get() =='\n' ) nb_lignes++;
jeudi 12 août 2004 à 22:49:55 | Re : Position curseur dans un fichier texte [C++]

BruNews

Administrateur CodeS-SourceS
Tu pourrais au moins comptabiliser les '\n' dans un buffer, serait autrement plus rapide.

ciao...
BruNews, Admin CS, MVP Visual C++
jeudi 12 août 2004 à 22:52:40 | Re : Position curseur dans un fichier texte [C++]

djl

oui, c'est sur qu'il vaut mieux utiliser un buffer

vendredi 13 août 2004 à 01:14:15 | Re : Position curseur dans un fichier texte [C++]

MissSixty


s'cuser moi l'ignorance, mais n'étant pas une pro de la prog, ça me dit absolument rien de mettre ça dans un buffer. Est-ce qu'il y a quelqu'un qui pourrait m'expliquer comment je peux incorporer ça à mon code ???? Ça serait vraiment gentil !

Merci encore pour les infos =)
vendredi 13 août 2004 à 07:00:39 | Re : Position curseur dans un fichier texte [C++]

djl

FILE *file;
char *buffer, *p;
long size;
size_t i = 0, nb_lines;


if( !(file = fopen( "toto.txt", "r")) ) exit(1) ;

fseek( file, 0, SEEK_END);
size = ftell( file );
rewind( file );

buffer = malloc( size );
fread( buffer, size, 1, file );
fclose( file );

p = buffer;
while( i++ < size ) if( *p++ == '\n' ) nb_lines++;

free( buffer );
samedi 21 août 2004 à 21:26:36 | Re : Position curseur dans un fichier texte [C++]

jeromedu94

salut,

faut faire gaffe aussi au type que t'utilises pour calculer le nombre de lignes, parce que si la variable est sur 16 bits ça peut faire un dépassement et tu auras un nombre négatif comme dans ton cas où tu devais avoir 35441 lignes.

1 2 3

Cette discussion est classée dans : fichier, lignes, curseur, position, nb


Répondre à ce message

Sujets en rapport avec ce message

[C] lignes d'un fichier dans un tableau : Segmentation fault [ par Michel76 ] Bonjour,Pardonnez-moi de cette question de débutant.Soit un fichier contenant :-----001002-----Je souhaiterais mettre chacune des lignes de ce fichier lire un fichier a l'envers en C (pas C++) [ par B_R_ ] Bonjour,Je suis à une position donnée dans un fichier (apres plusieurs fgets() )et j'ai besoin de recupérer un bloc de taille indefinie (mais marqué p spliter un fichier.... [ par damdam04 ] salut le monde des programmeursj'ai deja posté un message sur le forum de VB sur le splitage de fichier... "je cherche comment décomposer des lignes, fopen() => ouvrir une URL [ par yugiohjcj ] Bonjour,je programme en C et si j'ai du mal à progresser, c'est parce que je ne veux pas avoir un beau résultat sans savoir comment je l'ai obtenu.Ce pb recuperer nombre de lignes [ par sergio18 ] Bonjourje fais une classe ou je recupere le contenu d'un fichier texte lignes par lignes. Pour cela,j'utilise la fonction fgets et vu qu'elle ne retou lecture/écriture fichier binaire [ par SesechXP ] Salut !J'ai un programme modulaire à faire en C sous Borland C++ 5 pour un TP dont la fonction principale est donnée et je dois faire les différentes lire les lignes avec ReadFile [ par malik7934 ] Hello,Je suis peut-être grave de chez grave, mais j'ai pas pigé comment lire une ligne précise d'un fichier avec ReadFile. Vu les commentaires sur le Position du curseur [ par CyberP ] En mode console (MS-DOS), comment changer la position du curseur sur l'écran pour pouvoir écrire à un endroit précis ?Dans un autre compilateur, la fo Compter les lignes d un fichier texte [ par DeepThroat ] Bonjour a tous !J'aimerai trouver une fontion simple qui retourne le nombre de lignes dans un fichier , ou bien qui affiche ce nombre de lignes.j'imag lire fichier ligne par ligne [ par mat74 ] salut a ts je voudrai savoir comment je pourrai lire un fichier lignes par lignes . par exemple une fonction qui me permerttrai de recuperer la ligne


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales