le paramètre "step" que tu passes à fread ne sert à rien ici. regarde la valeur de retour pour voir combien d'octets il a lu (1 seul normalement).
Hélas non. Si step est supérieur à un, fread va lire step*1 (le deuxième argument) octets et ranger tout ça à l'adresse '&nb'. Comme nb est un char, il va yavoir écrasement mémoire. Par contre, ensuite, losqu'on manipule nb, on ne vois que le premier octet, c'est normal, mais plusieurs ont été lus.
Donc, il faut remplacer nb par un buffer de char suffisament grand (genre char buff[5]), en vérifiant que step est toujours inférieur à la taille de ce tableau. Puis int lu = fread(buff, sizeof(char), step, infile);.
Noter l'absence de '&' devant buff.
Maintenant, j'ai pas bien compris le but de cette ligne. Je ne peux donc pas aider plus.
[^] # Re: nb est un octet
Posté par Bonnefille Guilhem . En réponse au message manipuler fichier binaire. Évalué à 3.
Hélas non. Si step est supérieur à un, fread va lire step*1 (le deuxième argument) octets et ranger tout ça à l'adresse '&nb'. Comme nb est un char, il va yavoir écrasement mémoire. Par contre, ensuite, losqu'on manipule nb, on ne vois que le premier octet, c'est normal, mais plusieurs ont été lus.
Donc, il faut remplacer nb par un buffer de char suffisament grand (genre char buff[5]), en vérifiant que step est toujours inférieur à la taille de ce tableau. Puis int lu = fread(buff, sizeof(char), step, infile);.
Noter l'absence de '&' devant buff.
Maintenant, j'ai pas bien compris le but de cette ligne. Je ne peux donc pas aider plus.