Comment lire un flotteur de fichier binaire en C?
Tout ce que je peux trouver via google est poubelle... Notez que je veux la réponse dans C, cependant, si vous avez un complément de réponse avec un C++ solution ainsi puis vous obtenez des points bonus!
Je veux juste être en mesure de lire certains flotteurs dans un tableau à partir d'un fichier binaire
EDIT: Oui, je sais à propos de Endian-ness... et non, je ne se soucient pas comment elle a été stockée.
- Dans quel format sont ces flotteurs stockées, exactement?
- C'est pourquoi j'aime StackOverflow... j'attends juste un couple de minutes et j'ai déjà 5 réponses qui sont mieux que toute autre chose là.
- Vous ne se soucient pas comment les flotteurs sont stockées, et pourtant, vous avez besoin de quelqu'un pour vous parler de quelque chose d'aussi fondamental que la manière de lire un fichier binaire???
- Ouais désolé je n'ai pas toutes les API C mémorisé -_-
Vous devez vous connecter pour publier un commentaire.
Comment vous avez qu'à lire les flotteurs à partir du fichier dépend entièrement de la façon dont les valeurs ont été enregistrés il y a en premier lieu. Une façon courante pourrait être:
fread()
sans la fonction wrapper (voir ma réponse stackoverflow.com/questions/1422817/... ) - la seule raison pour l'existence de cette fonction avec des paramètres distincts pour la taille de l'objet et de l'objet de comptage est de permettre la lecture en vracÀ condition qu'elle soit écrite comme compatible représentation binaire.
read
pour les descripteurs de fichier,fread
pourFILE*
s etistream::read
pourc++
iostreams. Choisissez ce que vous plaît:Vous pouvez utiliser fread. (Note de l'API C, même si le site indique référence C++:))
Utilisation
fread()
de<stdio.h>
. Les assertions doivent être remplacées par de véritables code de gestion d'erreur.Gardez à l'esprit que vous courez au-boutiste des questions si vous transférez des fichiers entre différentes architectures.
Si le fichier est tout "float" et vous avez eu envie de le lire X nombre de fois, tout ce que vous avez à faire est ceci:
Cela fonctionne si les données sont écrites à l'aide de fprintf (application spécifique)
Cependant, vous pouvez également transtypage de votre flotteur à int32 et d'enregistrer , de charger et de transtypage.
Trompe peut-être (je n'ai pas utilisé le C++ F. IO fonctions pour un loooong loooooongtemps)
Si ces valeurs sont successivement placés dans un fichier binaire, vous pouvez faire une lecture de sizeof(float) octets par valeur float dans un tableau de caractères. Vous pouvez ensuite coulé dans une valeur flottante.