Lseek lseek(in, 0, SEEK_END);

Utilisateur anonyme -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
bonjour,

je rencontre un problème avec la fonction lseek;
pour récupérer la taille d'un fichier, je fais

lseek(in, 0, SEEK_END);

cette fonction me retourne sa taille, cela fonctionne mais avec des fichiers trop gros, une valeur négative est retournée (avec le même fichier que j'ai grossi).

Y-a-t-il une taille maximum pour lseek ???

8 réponses

super blaireau
 
J'ai le meme type de probleme pour une autre fonction.
Je pense que tu devrai essayer de convertir la valeur retournée en unsigned.

Par contre si tu trouve la fonction pour convertir en unsigned merci de me la donner
0
Utilisateur anonyme
 
alors

j'ai trouvé mon probleme (et la solution surtout) :

je récupérais la valeur de lssek dans un short, et donc lseek retournait une valeur trop grande !
J'ai donc mis un int, ce qui fonctionne mieux.

quand à ton probleme, essaie de caster :
unsigned int val = (unsigned) maval;
0
jojodeparis Messages postés 108 Statut Membre 12
 
salut les gars,
dite lseek , c'est quel fonction? en fait j'aimerais savoir en quel langage il est ecrit. (c++,perl,python.....).

sur ma debian, le lseek ne marche pas. J'aimerais savoir qu'es ce qu'il faut installer pour pouvoir utliser la fonction lseek.

Merci d'avance.
0
cibie666
 
Bonjour,
Moi, je l'utilise en C
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
Pour toute question de ce type : moteur de recherche préférer (google, exalead ...) + "man [nom de la fonction]"
ça donne :
http://wwwcgi.rdg.ac.uk:8081/cgi-bin/cgiwrap/wsi14/poplog/man/2/lseek
0
reodegre Messages postés 4 Statut Membre
 
Salut,
en fait je dispose d'un fichier .txt ouvert avec la fonction classic open() et que je l'ai partagé en paragraphes bien delimités par exemple de #,
Mon probleme est que je veux ecrire a des endroits precis se ce fichier par exemple ajouter des lignes a un paragraphe tout en decalant les ligne de dessous!
Apparemmet lseek ne le fait pas non??

Merci de m'aider si vous avez une idée!!!
0

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

Posez votre question
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
lseek te positionne, c'est tout.
0
reodegre Messages postés 4 Statut Membre
 
donc il faut faire tout le decalage a la main??
ou existe t-il une fonction predefini qui fait ça?

Merci davance
0
reodegre Messages postés 4 Statut Membre > reodegre Messages postés 4 Statut Membre
 
je veux dire qui n'crase pas les caracteres lorsquon se place que une ligne deja ecrite
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
il faut le faire à la main, je ne connait pas de fonction C standard qui permet d'insérer dans un fichier.
0
evilcool Messages postés 13 Statut Membre 1
 
et en C++ tu soré comment faire ^^"
merci d'avance
0
drep
 
bonjour, faire un lseek pour avoir la taille du ficher, c'est une grosse erreur, car en placant la tete de lecture a la fin de ton fichier, tu ne pourra plus lire, ni ecrire dessus. Donc oublie ca tout de suite, et fait un stat. (man 2 stat)
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
c'est faux. Ce n'est pas parceque tu es à la fin que tu ne peut plus écrire ! Tu ne peux en effet plus lire. Mais à ce moment là, il suffit de replacer le pointeur en début de fichier.
0