Programmation en C ftell fseek fread, lire la taille d'un fichier

J'ai un fichier. J'ai lu que la taille de fichier. Ensuite je boucle la lecture de deux octets à la fois jusqu'à ce que j'arrive à la fin du fichier. Après chaque opération de lecture je incrémenter la position actuelle par 2, toutefois, la situation n'est pas incrémentée après j'arrive à la moitié de la taille du fichier, la fread opération lire 0 octets.

le programme lit la taille du fichier. J'ai effectuer fread (2 octets à chaque fois) jusqu'à ce que la position actuelle est égale à la taille du fichier.
Il lit 22915 exemptions pour la taille du fichier
Il incrémente la position par 2 après chaque lecture, cependant, quand de position actuelle arrive à 11459 qui est la moitié de la taille du fichier, vous pouvez lire des octets zéro permettre d'entrer dans une boucle infinie.

FILE *file;
char *file_name;
int readCount = 0;
int position = 0;
int fileSize;
unsigned short mem_accesses;

file_name = "sample.txt";

/** open the file */
file = fopen(file_name, "rb");
fseek(file, 0, SEEK_END);
fileSize = ftell(file);
rewind(file);


while(position<fileSize){
   mem_accesses = getNumberAccesses();
   printf("position: %d filesize: %d\n",position, fileSize);

}

unsigned short getNumberAccesses(){
/** calculate number of accesses for process */
unsigned short val;

readCount = fread(&val, sizeof(val), 2, file);

position += readCount;
printf("read count: %d\n", readCount);

return val;
}
  • Je ne vois pas de question ici. Quelle est votre question?
InformationsquelleAutor user69514 | 2009-12-03