Gadouine
Messages postés7Date d'inscriptionmercredi 16 février 2011StatutMembreDernière intervention25 octobre 2011
-
15 juin 2011 à 16:20
Gadouine
Messages postés7Date d'inscriptionmercredi 16 février 2011StatutMembreDernière intervention25 octobre 2011
-
15 juin 2011 à 18:49
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 :
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
Gadouine
Messages postés7Date d'inscriptionmercredi 16 février 2011StatutMembreDernière intervention25 octobre 2011 15 juin 2011 à 18:49
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
Gadouine
Messages postés7Date d'inscriptionmercredi 16 février 2011StatutMembreDernière intervention25 octobre 2011 15 juin 2011 à 18:13
/!\ 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