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?
Version imprimable
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:
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:
1
2
3 #include <stdio.h> int fseeko(FILE *stream, off_t offset, int whence);
je n'ai pas testé mais essaie ca...
Code:
1
2
3
4
5 FILE *stream; fpos_t *pos; fgetpos(stream,pos ); fseek(stream, pos-(strlen(tmp) + j), SEEK_CUR);
Merci pour l'info :D
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
@+ :D
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.