RER C
-
Modifié par cptpingu le 10/03/2014 à 11:54
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
12 mars 2014 à 10:30
Bonjour à tous.
J'ai un petit problème. Voilà, j'essai de copier chaque octet d'un fichier dans un tableau de char, en sachant que tab[n]= valeur du n ième octet du fichier, grâce à cette fonction:
void tab_octet(FILE *f,char *tab)
{
int i;//brai ISN
FILE*debug=fopen("debug.txt","r+");
for(i=0;i<nb_octet(f);i++)// nb_octet renvoie le nombre d'octet du fichier (la fonction nb_octet fonctionne très bien )
{
fseek(f, i, SEEK_SET);//déplacement octet par octet depuis le début
fread(&tab[i] , sizeof(char) , 1 , f);
fprintf(debug,"\n Tab[%x]=%x",i,tab[i]);
}
fclose(debug);
}
Le problème, c'est que j'obtiens aléatoirement des "ffff" qui n'ont rien à faire là, comme l'illustre la sortie suivante:
Tab[0]=42 Tab[1]=4d Tab[2]=36 Tab[3]=fffffff9 <------------voila le problème ici l vrai valeur est f9 Tab[4]=15 Tab[5]=0 Tab[6]=0 Tab[7]=0 Tab[8]=0 Tab[9]=0 Tab[a]=36 Tab[b]=0 Tab[c]=0 Tab[d]=0 Tab[e]=28 Tab[f]=0
ou encore
Tab[530fe]=ffffff84 <--- pourquoi ces "f"? Tab[530ff]=66 Tab[53100]=20
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 10 mars 2014 à 12:00
Bonjour.
J'ai réécrit ton sujet, pour ajouter des balises de code, mettre un vrai titre, et corriger les innombrables fautes d'orthographe... Merci d'y faire attention la prochaine fois.
Pour ton souci:
- Pourquoi utilises-tu "%x" et non "%i" ? C'est la raison pour laquelle tu as des "fff" dans la partie "[]" de ton affichage.
- Pour les "fff" dans la deuxième partie de ton affichage, difficile de te répondre si tu ne fournis pas un petit exemple complet qui compile, avec tous les fichiers d'entrées. (Ne poste pas un fichier de 300 lignes, poste juste un fichier de quelques caractères qui permet de reproduire le problème, ainsi que le code minimaliste complet que tu exécutes).
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 12 mars 2014 à 10:30
Salut,
Ici le fseek est relativement useless , ton fread déplacera le curseur dans le fichier du coup c'est redondant...
Pour les FFFFFetc attention au type de ton tableau ici tu utilises un tableau en char donc si l'octet que tu lis dépasse la valeur max d'un char il reboucle...
exemple: