Bonjour j'aimerais quelques explications sur comment utiliser ftell() et fseek() car j'ai un peu de mal a les comprendre.
Le programme suivant lis d'un fichier qui contient des articles. Au debut de chaque article il y a un titre, et entre chaque article il y a une etoile. Le programme lis les titres et les imprime sur l'ecran.
Le resultat contient rien qu'une liste des titres d'articles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 # include <stdio.h> # include <stdlib.h> # define INFILE "starabstracts.dat" # define ARRAYSIZE 100 main ( ) { FILE * fp; long offset [ ARRAYSIZE ]; int c = 0; char iline [ 81 ]; for ( c = 0; c < ARRAYSIZE; c ++ ) offset [ c ] = -1; system ( "clear" ); if ( ( fp = fopen ( INFILE, "r" ) ) == NULL ) { printf ( "Unable to open %s!\n\n", INFILE ); perror ( INFILE ); exit ( 1 ); } c = 0; fgets ( iline, 81, fp ); while ( ! feof ( fp ) ){ if ( iline [ 0 ] == '*' ) { offset [ c ] = ftell ( fp ); c ++; } fgets ( iline, 81, fp ); } for ( c = 0; offset [ c ] >= 0; c ++ ) { fseek ( fp, offset [ c ], SEEK_SET ); fgets ( iline, 81, fp ); printf ( "%3d. %s", c + 1, iline ); } }
Le probleme c'est que meme si j'ai le code je ne comprend pas comment cela a ete fait.
Est ce que quelqu'un pourrait m'expliquer un peu le role de l'array "offset" et des for loop qu'on voit dans le code.
Aussi, comment les 2 fonctions fseek et ftell pourraient me servir pour ecrire un programme qui lis d'un fichier et exclu des lignes qui contiennent des strings qu'on connait a l'avance. Qui seront generalement des "tags" entre <>
Partager