Problème fseek()

Problème fseek() - PHP - Programmation

Marsh Posté le 13-08-2003 à 00:29:49    

Mon code ne marche pas :

Code :
  1. if (!($fp = fopen("data/annuaire.txt", "a+" )))
  2. { die("Impossible d'ouvir le fichier" ); exit(); }
  3. fseek($fp,-10,SEEK_CUR);
  4. fwrite($fp,"x",1);
  5. fclose($fp);


 
Ce code me met le caractère "x" à la fin du fichier ...  
 
(fseek ne renvoie aucune erreur)

Reply

Marsh Posté le 13-08-2003 à 00:29:49   

Reply

Marsh Posté le 13-08-2003 à 02:18:45    

1) juste pour savoir: si tu mets r+ au lieu de a+ dans le fopen (et en adaptant le fseek avec SEEK_END), ça fait quoi?
 
2) le fichier annuaire.txt il "existe" avant l'appel?
 
3) un ftell avant/après le fseek ça donne quoi?
 
Bon c'est juste des pistes...

Reply

Marsh Posté le 13-08-2003 à 07:30:38    

Comme disait Acut :
 

Citation :

3. if you're using fseek() to write data to a file, remember to open the file in "r+" mode, example:  
 
$fp=fopen($filename,"r+" );  
 
Don't open the file in mode "a" (for append), because it puts the file pointer at the end of the file and doesn't let you fseek earlier positions in the file (it didn't for me!). Also, don't open the file in mode "w" -- although this puts you at the beginning of the file -- because it wipes out all data in the file.


Source : http://fr3.php.net/fseek
 
Au fait : un die() suivi d'un exit() ne sert strictement à rien puisque c'est la même fonction..

Reply

Marsh Posté le 13-08-2003 à 12:17:05    

ACut a écrit :

1) juste pour savoir: si tu mets r+ au lieu de a+ dans le fopen (et en adaptant le fseek avec SEEK_END), ça fait quoi?
 
2) le fichier annuaire.txt il "existe" avant l'appel?
 
3) un ftell avant/après le fseek ça donne quoi?
 
Bon c'est juste des pistes...


 
1) Comme mon fichier existe et que je ne veux pas le supprimer, si je met "r+", mon fichier va être supprimé pour en recréer un.
 
2) Voir un ...
 
3) Je vais voir pour le ftell
 
*Syl* exact, j'ai pas fait attention ...

Reply

Marsh Posté le 13-08-2003 à 14:18:19    

[:rofl] on doit pas avoir la même traduction du mot "die"...

Reply

Marsh Posté le 13-08-2003 à 14:39:11    

'lut
 
@Olivier51
 
r : ouvre le fichier si celui existe, si il existe po ca plante
w : ouvre le fichier et le remets a 0 si il existe, si il existe po il le cree
 
++

Reply

Marsh Posté le 13-08-2003 à 19:09:16    

Juntao2k2 a écrit :

'lut
 
@Olivier51
 
r : ouvre le fichier si celui existe, si il existe po ca plante
w : ouvre le fichier et le remets a 0 si il existe, si il existe po il le cree
 
++


 
Je suis d'accord mais moi je dois écrire après le fichier initial, donc je suis obligé d'utiliser les "droits" d'écriture, soit j'utilise "a", soit j'utilise "w" pour écrire, mais si j'utilise "w", je n'aurais plus le fichier initiale ... Donc obligé d'utiliser "a".

Reply

Marsh Posté le 13-08-2003 à 23:03:47    

Olivier51 a écrit :


 
...
je suis obligé d'utiliser les "droits" d'écriture, soit j'utilise "a", soit j'utilise "w" pour écrire, mais si j'utilise "w", je n'aurais plus le fichier initiale ... Donc obligé d'utiliser "a".


 
... soit tu utilises r+ !!!
Le + signifie que tu ouvre en mode lecture + écriture.
Et au contraire du a, il va te permettre d'écrire à -10 de SEEK_END.
 
C'est ça en gros qu'on essayait de te dire.


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed