Aller à un certain point d'un fichier binaire en C (à l'aide de fseek), puis la lecture à partir de cet emplacement (à l'aide de fread)

Je me demande si c'est la meilleure façon d'aller sur la résolution de mon problème.

Je sais que les valeurs particulières pour les décalages d'un fichier binaire dans lequel les informations que je souhaite est tenu...Ce que je veux faire est de sauter à la décalages et puis lire un certain nombre d'octets, à partir de cet emplacement.

Après à l'aide de google, j'en suis venu à la conclusion que mon meilleur pari est d'utiliser fseek() pour passer à la position de l'offset, puis d'utiliser fread() pour lire un nombre d'octets à partir de cette position.

Ai-je raison de penser cela? Et si oui, comment est préférable d'aller sur le faire? c'est à dire la manière d'intégrer les deux ensemble.

Si je ne suis pas correct, que suggéreriez-vous-je faire à la place?

Merci beaucoup d'avance pour votre aide.

Matt

Modifier:

J'ai suivi un tutoriel sur la fread() et ajusté à la suivante:

    `#include <stdio.h>
    int main()
    {
      FILE *f;
      char buffer[11];
      if (f = fopen("comm_array2.img", "rt"))
      {
        fread(buffer, 1, 10, f);
        buffer[10] = 0;
        fclose(f);
        printf("first 10 characters of the file:\n%s\n", buffer);
      }
      return 0;
    }`

J'ai donc utilisé le fichier " comm_array2.img' et de lire les 10 premiers caractères du fichier.

Mais ce que je comprends, cela va de début de fichier, je veux aller de quelques-place-dans-fichier (offset)

Est de ce fait plus de sens?

Modifier Le Numéro 2:

Il semble que j'ai été un peu faible, et tout ce qui est nécessaire (il semblerait, d'après une tentative de ma part) c'est que le fseek() avant le fread() que j'ai dans le code ci-dessus, et il cherche à cet emplacement, puis lit à partir de là.

Oui. Utiliser fseek() et fread(). Ce code avez-vous essayé?
Oui, vous avez raison, mais quelle est votre question ou problème?
Il y a des tutoriels sur le web qui montrent comment les utiliser. En utilisant les termes de recherche "fseek fread C tutoriel", il devrait être facile à trouver. Avez-vous déjà travaillé par le biais de tout?
Regardez en haut de la pread() appel système. Le reproduire à l'aide de flux au lieu de descripteurs de fichiers. Peut-être que vous écrivez vous-même une fonction telle que: ssize_t fpread(char *buffer, size_t nbytes, size_t offset, FILE *fp);.
Si votre plate-forme prend en charge, vous pouvez utiliser pread() au lieu de cela, ce qui ne les deux opérations à la fois.

OriginalL'auteur user1291631 | 2012-03-25