|
Page Précédente | |
Auteur | Sujet : Erreur: undefined reference to `seek' (Modification fichier bmp) |
ngkreator | Bonjour à tous, j'ai récemment découvert que les fichiers bmp était facilement modifiables grâce à ce site: http://www.wotsit.org/ et notamment cette page http://www.fortunecity.com/skyscra [...] ffrmt.html
Message édité par ngkreator le 22-10-2007 à 15:19:51 |
Publicité | Posté le 21-10-2007 à 10:09:36 |
Ace17 | T'aurais pas simplement ecrit "seek" au lieu de "fseek" ... ? Message cité 1 fois Message édité par Ace17 le 21-10-2007 à 10:36:42 |
ngkreator |
Message édité par ngkreator le 21-10-2007 à 10:48:04 |
ngkreator |
|
ngkreator | Tu as raison merci. |
Taz bisounours-codeur |
Publicité | Posté le 22-10-2007 à 15:52:28 |
matafan | Tu écrit un octet dans un entier... Il faut lire sizeof tmp, pas 1.
Message cité 1 fois Message édité par matafan le 22-10-2007 à 15:56:06 |
Taz bisounours-codeur |
ngkreator |
|
Taz bisounours-codeur | fread a des arguments, ils ont un sens. Ouvre ton manuel et corrige celui qui est défectueux. |
Emmanuel Delahaye C is a sharp tool |
Message cité 1 fois Message édité par Emmanuel Delahaye le 22-10-2007 à 16:00:58 --------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
ngkreator |
Je comprends, étant donné que char stocke un seul octet ça me parait logique au final. Mais ça porte pas à confusion le fait d'utiliser char pour une valeur numérique? Mais au moins ça ne gaspille pas le 2ème 'octet qui ne sert pas avec int ok.
Ah oui d'accord. Donc apparemment il aurai ajouté la valeur tout simplement. Mais sinon je comprends pas pourquoi ça serait affiché en hexadécimal si dans mon printf j'ai mis %d?
Ok, bien sur je suis allé voir à plusieurs endroits comme ici par ex: http://www.cplusplus.com/reference [...] fread.html
Message cité 1 fois Message édité par ngkreator le 22-10-2007 à 16:24:01 |
Taz bisounours-codeur |
Si tu veux lire un char, utilise un char. Si tu utilises un int, lis un int.
|
ngkreator |
Le problème c'est que je veux lire 1 octet. Je le stocke dans un char ou un int ça marche pour les deux. Après je pensais juste que le type int portait moins à confusion, quand on lit le programme, que le type char pour stocker un octet.
|
Taz bisounours-codeur |
Stockage != lecture. Même remarque que précédemment. man fread. Là tu lis un byte qui écrit partiellement un int. C'est mauvais. Si tu lis un char, utilise un char.
|
ngkreator | Ca y est je viens de comprendre. C'est en utilisant char et en voyant que ça fonctionnait comme ça que j'ai compris. En fait fread modifie 1 seul octet à partir de l'adresse contenu dans le 1er argument.
Message cité 1 fois Message édité par ngkreator le 22-10-2007 à 17:16:45 |
ngkreator | Il faut avouer que la doc que j'avais porte à confusion: http://www.cplusplus.com/reference [...] fread.html
|
matafan |
ngkreator |
Message édité par ngkreator le 22-10-2007 à 17:18:08 |
Elmoricq Modérateur | En fait, la norme garantie juste que la taille minimum d'un int c'est 16 bits. |
Taz bisounours-codeur |
Le truc c'est de ne pas penser, et se référer à la documentation.
|
ngkreator | Ok merci pour la précision.
|
Taz bisounours-codeur | bah parce que tmp est pas initialisé, et si fread échoue ou ne lis pas le bon nombre de données (ton cas, tu lis 1 au lieu de sizeof(int)), et bah t'as de la soupe dans tmp, écrasée partiellement par tes données. |
ngkreator |
Le nom de ta doc? J'ai suivi la mienne sans réfléchir etdu coup je l'ai cru bètement.
Oui en fait je me suis mal exprimé. J'ai compris pourquoi ça marchait pas, ok. |
tpierron |
Message cité 1 fois Message édité par tpierron le 22-10-2007 à 17:42:42 |
ngkreator |
Oui, mais c'est une fonction fictive pour simplifier la présentation. J'allais pas vous noyer dans des trucs inutiles. Ma vraie fonction avait cette forme:
On voit le printf qui m'a servit à voir que c'était à ce fread que j'avais fait une connerie. Message cité 1 fois Message édité par ngkreator le 22-10-2007 à 17:51:10 |
Taz bisounours-codeur | tous ces fread/fseek/malloc sans controller le retour, ça peut faire boom sans que tu t'en rendes compte.
|
ngkreator |
Message édité par ngkreator le 22-10-2007 à 18:00:05 |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
ngkreator |
Message édité par ngkreator le 22-10-2007 à 18:22:56 |
tpierron | En fait, dans ce cas, il a raison d'utiliser 4 et pas sizeof(int). Il lit un format de fichier complètement figé depuis 15 ans au moins et qui ne changera certainement plus (au risque de péter qqs milliers d'applications, ce que Microsoft ne prendra jamais le risque de faire). Je changerais plutôt les variables int en uint32_t (déclarés dans stdint.h).
|
ngkreator |
Ah mais le but c'est de m'amuser et d'arriver à modifier des bmp sans bibliothèques qui vont me fournir des fonctions déjà toutes faites.
Message édité par ngkreator le 22-10-2007 à 18:49:04 |
ngkreator | J'ai avancé sur ma fonction me permettant de charger un fichier dans une structure. Elle prend un fichier en paramètre, renvoie un pointeur sur une structure.
|
xilebo noone | Erreur, il ne faut jamais retourner une variable locale à une fonction, elle n'existe que dans la fonction et la mémoire est libérée à la sortie de la fonction. Si tu arrives à lire en passant par l'adresse, c'est que cette mémoire n'a pas encore été écrasée au moment où tu la lis.
|
ngkreator |
|
xilebo noone | sa taille est parfaitement définie : |
Publicité | Posté le |
Page Précédente |
Sujets relatifs | |
---|---|
Erreur de GD library je pense | [PHP] Importer un fichier XML dans base MYSQL |
Include un fichier php dans un different site sur le meme serveur | fichier *.HTA, autodétection de la lettre du lecteur cd |
Nom de fichier au téléchargement | PB de download de fichier sur serveur distant. |
[Résolu][SH-Sed] Supprimer une partie d'un fichier | Mauvaise manipe = comment supprimer un fichier ? |
Supression caractères dans nom fichier | |
Plus de sujets relatifs à : Erreur: undefined reference to `seek' (Modification fichier bmp) |