2016-12-05 1 views
1

J'essaie d'exécuter un programme simple avec Codeblocks 16.11. Je suis bloqué en essayant de lire un omble chevalier d'un fichier dans le code suivant ...C fread char Codeblocks

FILE *fo; 
FILE *ft; 
char c; 

if ((fo = fopen("mayus.txt", "r")) == NULL){ 
     perror("opening mayus"); 
    } 

int m; 
m= fread(c, 1, 1, fo); 
printf("I just read for the first time with result m = %d\n",m); 

mon dossier mayus.txt juste un txt avec « abcdefghijk » écrit à l'intérieur. Je m'attends à voir un printf avec m = 1, mais je continue d'obtenir m = 0 dans la console.

+2

Notez que 'perror()' signale une erreur mais ne revenir. Si une erreur se produit lors de l'ouverture du fichier, votre code continue d'utiliser le descripteur de fichier non ouvert. Ce ne serait pas bon pour la santé de votre programme. –

Répondre

3

Vérifiez d'abord le fread prototype:

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

et ainsi m= fread(c, 1, 1, fo); est faux

Qu'est-ce que vous avez besoin est

m = fread(&c, 1, 1, fo); // the first param should be a pointer to the buffer 
+0

Vous avez totalement raison. Une erreur aussi simple. Merci beaucoup" – Asdemuertes