begin process at 2012 05 29 08:46:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

[HELP] Lecture de fichier limité


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[HELP] Lecture de fichier limité

mercredi 15 juin 2011 à 16:20:25 | [HELP] Lecture de fichier limité

Gadouine

Bonjour je viens solicité votre aide car je suis en rade d'idée
voila je cherche a crée un programe qui sers a extraire une donné (pour l'instant seulement une bmp nommé test je verais apres pour les choix)et sauvergarder cette donné sous l apparence d'hexadecimal et le tout dans un fichier dit DAT mais voila j ai un petit soucis :

passé un certain point de mon fichier lu il m'affiche plus que des FF dans mon fichier dat (apres 378 charactère il me semble, espace compris)

je suspecte le fait que fgetc ai pour prototype "int fgetc (...)"

voici la fonction en question :
Code C/C++ :
int ExtractHexFromFile(int argc, char *argv[]){
     unsigned char contenui = 0;

     int colone = 0;
     
     FILE* fichieri = NULL;
     FILE* fichierh = NULL;
     FILE* fichiero = NULL;
     
     fichieri = fopen("test.bmp", "r");
     fichierh = fopen("test.dat", "w");
     fichiero = fopen("test.HEX", "w");
     
     if (fichieri != NULL){
                 contenui = fgetc(fichieri);
                    while(contenui != EOF){
                                               unsigned char resultat1 = 0;
                                               unsigned char resultat2 = 0;
                                          resultat1 = contenui % 16;
                                          resultat2 = (contenui - resultat1) / 16; 
                                          //printf("\nresultat1 = %d\n",resultat1);
                                          //printf("resultat2 = %d\n",resultat2);
                                          if (resultat2 < 10){fprintf(fichierh,"%d",resultat2);} else if (resultat2 == 10){fputs("A",fichierh);}
                                          if (resultat2 != 11){} else if (resultat2 == 11){fputs("B",fichierh);}
                                          if (resultat2 != 12){} else if (resultat2 == 12){fputs("C",fichierh);}
                                          if (resultat2 != 13){} else if (resultat2 == 13){fputs("D",fichierh);}
                                          if (resultat2 != 14){} else if (resultat2 == 14){fputs("E",fichierh);}
                                          if (resultat2 != 15){} else if (resultat2 == 15){fputs("F",fichierh);}
                                          colone++;
                                          if (resultat1 < 10){fprintf(fichierh,"%d ",resultat1);} else if (resultat1 == 10){fputs("A ",fichierh);}
                                          if (resultat1 != 11){} else if (resultat1 == 11){fputs("B ",fichierh);}
                                          if (resultat1 != 12){} else if (resultat1 == 12){fputs("C ",fichierh);}
                                          if (resultat1 != 13){} else if (resultat1 == 13){fputs("D ",fichierh);}
                                          if (resultat1 != 14){} else if (resultat1 == 14){fputs("E ",fichierh);}
                                          if (resultat1 != 15){} else if (resultat1 == 15){fputs("F ",fichierh);}
                                          colone++;
                                          colone++;
                                          if (colone < 48){}
                                          else {fputs("\n",fichierh);
                                          colone = 0;}
                                          //fprintf(fichierh,"%d ",contenui);  
                                          //printf("valeur decimal = %d\n",contenui);
                                          //printf("valeur max = %d\n",colone);
                                          contenui = fgetc(fichieri);
                                          
                                         }
                         fclose(fichieri);
                         fclose(fichierh);
                         }
     }

merci pour toute réponse et aide pasque la je seche a mort T.T
mercredi 15 juin 2011 à 17:08:11 | Re : [HELP] Lecture de fichier limité

fregolo52

Membre Club
je suspecte le fait que fgetc ai pour prototype "int fgetc (...)"

dans ce cas pourquoi ne pas tenter fgets ?
Code C/C++ :
fgets(&contenui, 1, fichieri);
mercredi 15 juin 2011 à 17:21:47 | Re : [HELP] Lecture de fichier limité

patatalo

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
salut,


Ta méthode de conversion hexa/ascii est très très mauvaise.

int c;
int n = nb_colonnes;
while((c = fgetc()) != EOF)
{
fprintf(fd, "%0.2X", c);
if (--n == 0) { fputs(fd, '\n'); n = nb_colonnes; }
}

char conv[] = "0123456789ABCDEF";
resultat1 = contenui % 16; // = contenui & (16-1);
resultat2 = (contenui - resultat1) / 16; // = contenui >> 4

fputs(fd, conv[resultat2]);
fputs(fd, conv[resultat1]);

@++
mercredi 15 juin 2011 à 17:54:59 | Re : [HELP] Lecture de fichier limité

Gadouine

dans ce cas pourquoi ne pas tenter fgets ?



par ce que je m interesse en particulier au caractere par caractere et non ligne a ligne

patatalo, ta solution me parait bien mais je vois pas trop comment la porté :/

si je me trompe pas "fd" est a la place de "fichierh"

et la suite de la convertion doit etre dans la boucle sinon elle ne sera pas exécuté a chaque fois non ?
mercredi 15 juin 2011 à 18:13:33 | Re : [HELP] Lecture de fichier limité

Gadouine

/!\ Dsl pour le double posting mais semblerais qu on peu pas editer ou alors j ai pas d'oeil xD /!\

bah je viens de finalement porter ta solution mais voila sa marche pas : le truc c'est que le programme plante pile la ou moi je commencais a avoir les FF en gros sa marche mais jusqu'a mon soucis

de plus moi sa plantais malgrès ma méthode drastique :/

dsl patatalo mais je crains que le probleme ne vienne pas de ma conversion
mercredi 15 juin 2011 à 18:49:08 | Re : [HELP] Lecture de fichier limité

Gadouine

Réponse acceptée !
Aller et comme jamais deux sans trois x) [le triple posting]
alors sa viens pas de mon prgramme sa viens du fichier en lui meme x)
le bmp etais sous dit "indéxé" et du coup tout le reste etais abrégé dans la ram
d'ou le fait de tombé sur FF

merci a vous deux pour votre aide
fregolo52 j ai tester ta solution bien entendu mais le soucis c est que dans mon cas sa rajoute 00 au tout début sinon c étais les memes résultat

post fermer car solution trouver


Cette discussion est classée dans : resultat1, resultat2, if, else, fichierh


Répondre à ce message

Sujets en rapport avec ce message

renvoyé deux parametres ds une fonction [ par quenti ] bonjour,je dois renvoyé resultat1 et resultat2 au programme afin d'afficher les resultats mais je ne sais pa coment faire?#include "stdio.h"#include " projet bataille navale problème!!! [ par krimoluv ] Bonsoir à tous,voila j'ai mon projet bataille navalle qui approche les 1900 lignes. Malheuresement je n'ai pas eu le resultat esconté car en compilant verification si le mot est palindrome [ par sdiri_med ] Salut Je n'ai pas arrivé à résoudre un problème de vérification d'une chaine de caractères. Le problème consiste à vérifier si un mot est palindrome besoin d'aide pour mon if, il ne fonctionne pas ...? [ par flowneo ] bonjour, un petit problème dans ma boucle if, je voudrais comparer chaque lettre de la chaine du Joueur2 à celles du Joueur1: for (i=0;i>bienPlace[i Calculateur 32bits ... problème de débordement !!! [ par boguista ] j'ai à coder le calcul suivant :S= c. [(a.b + (a+b).2^15 + 2^30)/2^32] sachant que a, b et c sont sur 16 bitsAvez vous un algorithme précis qui puisse gestion evenement en sdl [ par jilou2008 ] bonjour j ai creer un petit programme en c++ avec sdl , j utilise le joystick pour deplacer une image sur l ecran et la coller ensuite seulement pour probleme sscanf [ par maha1987 ] bjr tt le monde jai un prob dans ce prog (dans la fct verif si letat =4 le prog doit sticker la valeur de la partie entiere et decimale de la chaine d erreur c [ par maha1987 ] Bonjour tout le monde, j'ai ce programme C qui prend des caractères et doit afficher si la chaîne constituée par ces caractères est valide(constituée selection bien défini d'une feuille de calcul [ par aouaoua ] Bonjour le forum je travaille actuellement sur un petit projet sous Excel/VBA mais sincèrement je n'arrive pas a m'en sortir. j'ai créer un userforme c'est quoi ca #if 1 [ par ifren ] salut, oui je sais que je vous ennui avec mais c'est quoi ca ou encors, comment ca marche...ex mais parce que j'ai que 15 jours que j'ai embrasser la


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales