comparer 2 hexadecimal [réglé] - C - Programmation
Marsh Posté le 29-05-2007 à 23:36:30
c=="\x4e" ou c==\x4e ?
Je propose car je crois que pour déclarer que ta val est une hexa faut mettre \x devant
Marsh Posté le 30-05-2007 à 00:14:40
Pour les nombres en hexa c'est 0xff non ?
donc if( c == 0x4e )
Marsh Posté le 30-05-2007 à 07:55:04
Je crains le pire... Que contient ton fichier et comment obtiens-tu la valeur qui se trouve dans c ?
Edit :sinon oui évidemment c'est 0x4e
Marsh Posté le 30-05-2007 à 09:22:43
Et puis ranger le retour de fgetc() dans un char pour faire ce genre de test, je ne suis pas sûr que ce soit une bonne idée.
Marsh Posté le 30-05-2007 à 11:50:49
Bonjour, merci pour vos réponses.
En fait pour ouvrir mon fichier, je fait un fopen avec l'option ouvrir en binaire. Et ensuite je lis avec fgetc, c etant defini en char. Pour vérifier que je lis bien les hexa, j ai simplement utilisé fput pour mettre ce que je lis dans un autre fichier, que j'ai ouvert avec un éditeur hexadécimal. Vu que je retrouve la meme chose, je me dis que ma lecture est correcte.
mais si c est defini en char, cela ne pose pas de problème si je fais if( c == 0x4e ) ?
Merci
Marsh Posté le 30-05-2007 à 12:19:31
Non ça ne pose pas de problème, mais par contre quand tu fait fgetc il faut mettre la valeur de retour dans un int et comparer cet int à EOF pour détecter les erreurs de lecture et surtout la fin de fichier. Après et après seulement tu peux mettre l'int dans un char si ça te chantes.
Le problème c'est qu'EOF ne tiens pas sur un char (en fait EOF c'est -1), donc si tu met le retour de fgetc dans un char directement tu ne peux pas gérer les erreurs (en particulier si ton fichier d'entrée est vide).
Marsh Posté le 30-05-2007 à 12:21:08
si tu fais c = fgetc() alors c doit être un int. et à la place de 0x4e t'as aussi le droit d'écrire tout simplement 'N'
Marsh Posté le 29-05-2007 à 23:00:54
Bonjour, j'ai un souci en C pour faire la comparaison suivante.
Je souhaite ouvrir un fichier1 en hexadecimal. Pour cela juste un fgetc.
Je souhaite savoir si mon troisième hexadecimal est bien egal à par exemple "4e".
Comment puis je procéder ?
car le if ( c == 4e) ne marche pas, c etant defini comme un char.
Merci.
Message édité par Vincent21 le 30-05-2007 à 22:58:42