Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1667 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [réglé] comparer 2 hexadecimal

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[réglé] comparer 2 hexadecimal

n°1566974
Vincent21
Posté le 29-05-2007 à 23:00:54  profilanswer
 

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
mood
Publicité
Posté le 29-05-2007 à 23:00:54  profilanswer
 

n°1566979
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 29-05-2007 à 23:36:30  profilanswer
 

c=="\x4e" ou c==\x4e ?
 
Je propose car je crois que pour déclarer que ta val est une hexa faut mettre \x devant


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°1566984
flayers
Posté le 30-05-2007 à 00:14:40  profilanswer
 

Pour les nombres en hexa c'est 0xff non ?
donc if( c == 0x4e )

n°1567005
matafan
Posté le 30-05-2007 à 07:55:04  profilanswer
 

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


Message édité par matafan le 30-05-2007 à 07:55:41
n°1567019
Elmoricq
Modérateur
Posté le 30-05-2007 à 09:22:43  profilanswer
 

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.


Message édité par Elmoricq le 30-05-2007 à 09:29:48
n°1567143
Vincent21
Posté le 30-05-2007 à 11:50:49  profilanswer
 

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


Message édité par Vincent21 le 30-05-2007 à 12:03:37
n°1567165
matafan
Posté le 30-05-2007 à 12:19:31  profilanswer
 

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).

n°1567167
Taz
bisounours-codeur
Posté le 30-05-2007 à 12:21:08  profilanswer
 

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'

n°1567550
Vincent21
Posté le 30-05-2007 à 22:58:22  profilanswer
 

merci beaucoup problème résolu.
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [réglé] comparer 2 hexadecimal

 

Sujets relatifs
Comparer date batchmatcher le ? dans une regle d'url_rewriting
description d'un fichier hexadecimalComparer avec des intervalles
comparer deux dates en perlcomparer une liste de date sql avec la date today
Url rewriting - regle qui fait tout planterdestruction en règle d'un objet perso en .NET
batch pour comparer[réglé] probleme d'execution de programme C..
Plus de sujets relatifs à : [réglé] comparer 2 hexadecimal


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR