Bonjour,
Quand je compile cette ligne :
fseek(stream, -(strlen(tmp) + j), SEEK_CUR);
le compilateur m'indique l'avertissement :
Valeur non signée négative.
Y-a-t'il un moyen de realiser un retour en arriére dans un fichier sans ce message d'erreur?
Bonjour,
Quand je compile cette ligne :
fseek(stream, -(strlen(tmp) + j), SEEK_CUR);
le compilateur m'indique l'avertissement :
Valeur non signée négative.
Y-a-t'il un moyen de realiser un retour en arriére dans un fichier sans ce message d'erreur?








Je ne suis pas sûr que l'on puisse revenir en arrière avec fseek.
Par contre, dans mon man (Sun Solaris) c'est possible avec lseek :
Essaye la fonction fseeko (si elle existe chez toi) qui se rapproche plus de lseek pour voir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #include <sys/types.h> #include <unistd.h> off_t lseek(int fildes, off_t offset, int whence);
Détail des explications : cours et tutoriels pour apprendre la programmation C : http://c.developpez.com/cours/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 #include <stdio.h> int fseeko(FILE *stream, off_t offset, int whence);








je n'ai pas testé mais essaie ca...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 FILE *stream; fpos_t *pos; fgetpos(stream,pos ); fseek(stream, pos-(strlen(tmp) + j), SEEK_CUR);
Pour le retour en arrière dans un fichier j'ai utilisé les fonctions
fgetpos(FILE *stream, fpos_t filepos);
Pour memoriser l'emplacement ou revenir
et la fonction
fsetpos(FILE *stream, fpos_t filepos);
Pour revenir a l'emplacement voulu
@+![]()
salut,
Pour se déplacer en arrière dans un fichier texte, on peut utiliser
fseek(curseur,-nbchar,SEEK_CUR);
en remontant de nbchar caracteres dans le texte.
MAIS lorsque j'ai essayé un code du style
do
{
fseek(curseur,-2,SEEK_CUR);
c=fgetc(curseur);
}while(c != '<');
afin de remonter dans le texte jusqu'au caractère '<' (pour moi)
cela ne fonctionne pas si le fichier n'est pas ouvert en binaire!!!!!!
(fopen(SourceFichier,"rb+")car le caractère \n n'est pas reconnu et pire, il plante tout car la boucle est infinie.
Voilà.
Je réponds un peu tard à ce message mais ça servira peut être à quelqu'un d'autre.
Partager