While (( c = getc(fichier)) != EOF) boucle de ne pas arrêter l'exécution

Je ne peux pas comprendre pourquoi ma boucle while ne fonctionne pas. Le code fonctionne très bien sans elle... Le but du code est de trouver un message secret dans un fichier bin. Donc j'ai eu le code pour trouver les lettres, mais maintenant, quand je cherche à obtenir de la boucle jusqu'à la fin du fichier, il ne fonctionne pas. Je suis nouveau à cela. Ce que je fais mal?

main(){

FILE* message;
int i, start;
long int size;
char keep[1];

message = fopen("c:\\myFiles\\Message.dat", "rb");

if(message == NULL){
    printf("There was a problem reading the file. \n");
    exit(-1);
}

//the first 4 bytes contain an int that tells how many subsequent bytes you can throw away
fread(&start, sizeof(int), 1, message);
printf("%i \n", start); //#of first 4 bytes was 280
fseek(message, start, SEEK_CUR); //skip 280 bytes
keep[0] = fgetc(message); //get next character, keep it
printf("%c", keep[0]); //print character

while( (keep[0] = getc(message)) != EOF) {
    fread(&start, sizeof(int), 1, message);
    fseek(message, start, SEEK_CUR);
    keep[0] = fgetc(message);
    printf("%c", keep[0]);
}

fclose(message);

system("pause");
}

EDIT:

Après avoir regardé mon code dans le débogueur, il semble comme avoir "getc" dans la boucle while jeté le tout hors tension. Je l'ai fixée par la création d'un nouveau char appelé lettre, puis le remplacement de mon code:

fread(&start, sizeof(int), 1, message);
fseek(message, start, SEEK_CUR);

while( (letter = getc(message)) != EOF) {
    printf("%c", letter);
    fread(&start, sizeof(int), 1, message);
    fseek(message, start, SEEK_CUR);
}

Il fonctionne comme un charme maintenant. Toutes les suggestions sont bien sûr les bienvenus. Merci à tous.

Avez-vous essayé de remplacer la condition de la boucle avec la fonction feof?
Qui introduit une erreur, n'oubliez pas que feof() ne retourne true après en essayant de lire le dernier octet.
Vous n'avez pas dit nous ce qui ne fonctionne pas. Quels sont les résultats que vous obtenez, et quels sont les résultats que vous souhaitez obtenir? Cela va nous aider à vous aider à trouver la réponse.
Il n'y a aucun point en ayant un tableau qui est à seulement 1 élément - char keep et de se débarrasser de la [0] partout.
En fait, les garder doivent être un int à corriger. Voir JonathanLeffler de réponse. @User1695758, si la réponse de Jonathan prend soin de, s'il vous plaît assurez-vous de l'accepter.

OriginalL'auteur user1695758 | 2012-12-04