J'essaye d'écrire un simple économiseur de fichier image TGA comme un exercice d'apprentissage en C++. Je base mon code sur un exemple de chargeur TGA qui déclare une structure pour l'en-tête, puis utilise fread() pour charger tout l'en-tête en une fois.Lors de l'écriture de struct dans un fichier, trop d'octets sont écrits
Mon programme ne fonctionne pas pour le moment, et il semble qu'il y ait deux octets supplémentaires écrits dans le fichier. J'ai imprimé la taille de ma structure et c'est deux octets trop grands (20 au lieu du 18 correct). Après un peu de lecture, je pense que le problème est lié à l'alignement et au remplissage des données (je ne suis pas très familier avec la façon dont les structures sont stockées).
Ma question est quelle est une bonne solution pour cela? Je suppose que je pourrais écrire les composants de la structure octet par octet, au lieu d'utiliser fwrite() pour écrire toute la structure en même temps, ce que je vais faire maintenant. J'ai supposé que si cela fonctionnait lors du chargement de l'en-tête, cela fonctionnerait également lors de l'écriture. Ma supposition était-elle incorrecte?