Bonjour.
Alors voila, j’ai un gros probleme en C et j’espere que vous allez pouvoir m’aider parce que je trouve aps la solution. Il s’agit d’ecrire un fichier en binaire sur disque (un fichier pgm format raw). Le code ci dessous ne fonctionne pas sous Windows, mais très bien sous Unix/Linux. Je comprends vraiment pas !
image->buffer[] est de type unsigned char.
Sous xp j’obtiens un morceau d’image décalé :??: , rien à faire !
Si vous pouvez m’aider, merci beacoup, j’aimerais bien bosser ailleurs qu’a la fac, en plus ecrire une image c’ets pas le but du TP, qui est plutot de faire de la detection de contours
Bonne idée d’acidbao: le fprintf doit être pour le flux ASCII, et vu que tu écrit du binaire, ce serait plutôt fWrite: et l’encodage des carac différent entre linux et windows expliquerait le truc du décalage (au hasard: les retours chariots sur 2 caracs: 0x0D 0x0A). (le C est si loin pour moi…)
Je suis pas convaincu il a dit plus haut qu’il avait essayé avec fwrite, mais ce serait plus clair d’envoyer tout le buffer d’un coup (ou ligne par ligne si tu les parcours à l’envers) plutot que le parcourir pour écrire octet par octets. En plus fwrite est bufferisée en interne donc t’a pas à te soucier de la taille du buffer que tu passes.
Par contre je pense pas que ce soit un problème d’endianness, vu que c’est des octets qu’on manipule et pas des mots de 16/32/64bits.
Si ya décalage, faudrait peut être avoir le code complet pour voir comment tu écris l’en-tête.