Bonjour et bienvenue à nouveau.
Dans cette conférence, je veux parler sur le positionnement des fichiers, essentiellement
certaines fonctions qui vous permettront pour changer la position d'un fichier.
Donc pour de nombreuses applications, vous allez avoir besoin de pouvoir accéder aux données
d'un fichier autre qu'un ordre séquentiel.
L'ordre séquentiel commence au début puis en allant
octet par octet vers la fin.
Ce n'est pas toujours utile car vous voudrez peut-être aller au milieu
d'un fichier et saisir des données ou à la fin du fichier et récupérer les données.
Tout dépend de l'application.
Tu ne veux pas toujours y aller du début jusqu'à la fin.
Il y a donc différentes fonctions que vous pouvez utiliser pour accéder
aux données dans un ordre aléatoire.
Il y a deux aspects du positionnement des fichiers.
L'un est de savoir où vous sont dans un fichier et l'autre se déplace
vers un point donné d'un fichier.
Ce sont vraiment les deux choses que vous voulez savoir
quand vous parlez de fichiers et du positionnement d'un fichier, ce qu'il pointe réellement.
Encore une fois, où vous êtes dans le fichier lui-même et si vous souhaitez ou non
vous déplacer ailleurs dans le fichier.
Vous pouvez donc accéder au fichier à l'adresse une position aléatoire, que vous ouvriez ou
non le fichier, vous pouvez déplacer votre partenaire de fichier.
Vous n'avez pas besoin d'ouvrir le fichier pour changer où vous êtes à
changer voir où vous êtes.
Alors découvre où tu es nous allons parler en premier.
Vous avez deux fonctions à trouver là où vous êtes dans un fichier.
S'appelle ftel et on est appelé fgetpos, position fget.
Pour ftell, la fonction réelle la définition est assez simple.
Vous revenez le long et vous prenez un pointeur de fichier.
Et cette fonction va accepter un pointeur de fichier comme
argument et il renverra l'entier long valeur qui spécifie la position du caractère dans
le fichier, donc c'est va vous dire la position.
Vous pouvez l'utiliser en créant un variable dans ce cas fpos, qui va à ce qui
va être retourné, puis en passant ce pointeur
de fichier et en appelant ftel.
La variable de position f tient maintenant la position actuelle dans le
fichier et vous pouvez l'utiliser pour revenir au position à tout moment ultérieur.
Donc ça va vous rendre fposition.
C'est comme ça que tu peux la position du point actuel
vers lequel vous pointez.
La valeur est le décalage en octets depuis le début du fichier.
Donc, très simple à utilisez pass dans votre pointeur il va
revenir et vous dire où vous sont dans votre fichier en fonction essentiellement du
début du fichier jusqu'à combien d'octets depuis le début.
Donc, dans cet exemple, nous créons un pointeur de fichier appelé fp et nous
créons un entier appelé length.
Nous allons ouvrir le fichier, et ce serait pour la lecture seulement.
Nous allons faire sûr que ce n'est pas nul.
Si c'est le cas, nous allons pour renvoyer une erreur.
Et puis ne vous inquiétez pas pour le fseek.
Le fseek va en fait juste pour aller à la fin du fichier.
C'est une autre fonction qui nous aide.
Je ne l'utilise que pour démontrer le ftel.
Fseek va aller jusqu'au bout du fichier, puis vous
allez dire ftell fp, et c'est parti pour vous dire que vous allez être à la
fin du fichier.
Donc le lien qui est retourné est à la fin du fichier.
Et donc ce qui va se passer est il retournera la
taille totale du fichier en fonction de la longueur parce que vous avez déplacé votre pointeur vers la
fin et vous a dit où suis-je et il a dit que vous êtes à
la fin, alors retournez la fin.
Et la fin est le nombre de octets de la dernière lecture.
Alors jetons un œil à ça à l'intérieur de notre bel IDE nos blocs de code.
Voici donc notre exemple de codage où nous créons notre pointeur de fichier.
Nous le définissons sur null, faisons sûr que ce n'est pas nul.
Nous essayons de l'ouvrir.
Et puis nous faisons un fseek qui est juste va changer notre pointeur de fichier.
Ftel va nous dire où nous désignons.
Cela va donc pointer vers le fin et ce sera n'importe quel
nombre d'octets jusqu'à la fin.
Quand on lance ça, qu'est-ce que tu vas à noter, il affiche 24 octets.
Cela signifie que vous êtes à la fin de la car le fichier est un petit fichier et
le fichier ne contient que 24 octets.
En règle générale, vous utiliserez ftel après vous avez écrit ou lu ou
après l'avoir fait en fseek où vous avez déménagé quelque part.
Mais c'est très simple d'appeler ftel avec le pointeur de fichier, puis
len vous indique simplement où vous êtes.
Vous pouvez également utiliser le fget fonction position ou fgetpos.
Et c'est une deuxième fonction fournir des informations sur la position
actuelle du fichier.
C'est un peu plus compliqué que ftel.
Cela renvoie un entier.
Il faut un pointeur de fichier et il prend également le type f position t.
Le premier paramètre est donc ce pointeur de fichier, afin que vous sachiez
dans quel fichier vous devez lire.
Le deuxième paramètre est un pointeur vers un type défini dans standardio. h.
Le type f position t est capable de enregistrer chaque position dans un fichier.
Donc, la fonction de position fget est conçu pour être
utilisé lorsque la fonction de positionnement fset position.
Donc, vous utilisez la position fset et alors vous utilisez la position fget
en combinaison avec cela.
Donc, la fonction de position fget stocke la position actuelle et
les informations sur l'état du fichier pour le fichier et
positionner et renvoyer zéro si l'opération est réussie, renvoie un valeur entière non nulle en cas d'échec.
Ainsi, vous pouvez créer un variable de type de position s.
Et ici, nous disons que c'est juste ici.
Ensuite, nous appelons la position fget.
Nous spécifions dans notre pointeur de fichier, et nous spécifions dans notre type de position f.
Nous devons passer dans l'esperluette, le adresse de car ce n'est pas un pointeur.
Donc dans ce cas, le courant la position du fichier est dans
la variable bonjour ou ici.
Il faut donc déclarer une variable de type f position t car
c'est ce que vous passez dans votre paramètre, votre deuxième paramètre.
Vous pouvez déclarer un pointeur du taper f position t étoile car il
n'y aura pas de souvenirs associé pour stocker les données de position.
Alors regardons un exemple cela aura beaucoup plus de sens.
Dans ce cas, nous créons notre fichier pointeur, nous créons notre position de type
f possession t, nous appelons open puis nous appelons la position fget.
Et nous passons dans notre dossier pointeur dans notre position finale.
Alors c'est là que nous sommes mémoriser la position.
Nous allons obtenir le position où nous en sommes.
Alors quand on dit f mis s, nous écrivons des données
là où nous allons.
Donc encore une fois, f prendre position et ftell vous indique où vous voulez réellement
écrire ou lire.
C'est quelque part au milieu.
Ce n'est pas au début ce n'est pas à la fin.
Vous bougez.
Vous vous déplacerez généralement avec une recherche ou votre déménagement avec autre chose,
obtenez une position vous dit où vous en êtes.
Alors fget position et ftell est va vous dire exactement où vous pointez,
et que signifie que vous pouvez vous déplacer ailleurs et que
vous pourrez lire.
Maintenant, définissant une position dans un fichier jusqu'à ce point, nous lisons
simplement où nous en sommes.
Nous n'allons pas vraiment lire là où nous en sommes, à moins de définir
quelque chose, nous avons fait une lecture et une écriture.
Donc, en complément de ftell, vous avez aussi fseek.
Et fseek va vous permettre de déplacez-vous quelque part pour votre position.
Il renvoie un int.
Il renvoie un pointeur de fichier, un long fset et un entier original.
Le premier paramètre est un pointeur sur le fichier que vous repositionnez.
Les deuxième et troisième paramètres définissent où vous voulez aller dans le fichier.
Le deuxième paramètre est un offset où un point de
référence spécifié par le troisième paramètre.
Le point de référence peut être un de trois valeurs que
vous spécifiez par les noms prédéfinis.
Cherchez ensemble, cherchez le courant et cherchez la fin.
L'ensemble de recherche définit le début du fichier.
Seek cur définit le courant la position dans le fichier et la recherche de
fin définit la fin du fichier.
Donc pour un fichier en mode texte, le deuxième argument doit être une
valeur renvoyée par ftel.
Donc, vous devriez remarquer qu'avec fseek et ftel, ils sont utilisés ensemble.
Donc le troisième argument pour le texte les fichiers de mode doivent être définis par recherche.
Pour les fichiers texte, toutes les opérations avec fseek sont exécutés en référence au
début de la fichier pour les fichiers binaires dont nous n'avons pas
vraiment appris grand-chose.
Mais pour les fichiers binaires, le L'argument offset est simplement
un nombre d'octets relatif.
Vous pouvez donc fournir valeurs positives ou négatives pour
le décalage lorsque la référence point est spécifié comme seek cur.
Alors regardons un exemple.
Ici dans cet exemple, encore une fois, nous faisons les fputs.
Nous écrivons donc des données dans notre fichier, puis nous utilisons fseek.
Fseek va vous émouvoir.
Ici, cela veut dire que vous êtes va déplacer sept octets et nous utilisons
l'ensemble de recherche pour dire que nous voulons pour se déplacer quelque part essentiellement
sept octets depuis le début.
Et nous pouvons passer du début du fichier de
sept octets qui va le déplacer.
Après sept octets, nous pouvons alors y écrire des données.
Et nous pourrions également utilisez ftell pour voir que oh après sept
octets où nous sommes.
Vous pouvez utiliser les informations pour récupérer d'où vous êtes.
Encore une fois, tout l'intérêt du fseek et le fgets est que vous voyez
où vous vous trouvez pour spécifier où vous voulez écrire ou lire.
Donc fseek s va en fait déplacer la position, dire va vous dire
où vous vous trouvez.
La position Fset est également comme fseek.
Mais la position fset est un un peu plus compliqué.
Il ira avec la position fset.
Donc, fset get get position est aussi très similaire à la position fset.
Avec la position fset, il spécifie le premier paramètre comme pointeur
vers le fichier ouvert.
Le deuxième paramètre est un pointeur de type f position t.
La position qui est stockée à l'adresse a
été obtenue en contenant la position fget.
Donc fset position a votre fichier pointeur, puis votre variable réelle.
Et la variable ici était auparavant défini par un appel à fget position.
Encore une fois, vous allez utiliser fset et fget ensemble.
La position fset renvoie un valeur non nulle en cas d'erreur ou zéro en
cas de succès.
Cette fonction est conçue pour travailler avec une
valeur renvoyée par fget position.
Vous ne pouvez donc l'utiliser que pour accéder à un numéro dans un fichier pour obtenir une place dans le fichier
que vous avez été auparavant.
Fseek vous permet d'accéder à n'importe quel position juste en spécifiant
le décalage approprié.
Alors ici on a l'air d'avoir notre position f position de type t.
Nous ouvrons notre dossier et alors nous appelons la position fget.
En position fget, nous spécifions où nous voulons déplacer le
pointeur, où nous sommes en fait lire ou écrire dans le fichier.
Ensuite, nous utilisons des fputs pour partout où nous l'avons déplacé.
Et puis la position fset va définissez à nouveau quelque chose de spécifique sur
lequel nous voulons écrire, puis écrivez-le où que vous soyez.
Donc avec toutes ces fonctions, vous voulez vraiment voir où vous
pointez.
Cela deviendra beaucoup plus facile à comprendre une fois que nous avons notre défi.
Donc avec la lecture et l'écriture, vous veulent toujours aller quelque part au point
où vous écrivez.
Tu ne veux pas toujours écrire pour le début ou la fin.
Et donc ces fonctions sont très utile pour vous déplacer où vous voulez
vous positionner n'importe où dans un fichier.
Merci