Un fread qui n'en fait qu'a sa tete (C++)

EYZO Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   -
j'ai une commande:
char m_buffer[15];
FILE *file;
File = fopen( "Control.txt", "r" );
fread( m_buffer, sizeof( char ), 16, File );
fread lit 16 caracteres dans le fichier file et les met chacun dans une case de m_buffer[15].
j'utilise cette fonction dans un prog, ca marche, je l'integre dans un autre prog, et ca ne marche plus. je veux dire que l'execution du thread s'arrete sur cette commande.et je ne vois rien en debugmode, meme en execution pas a pas. tout va bien jusqu'a cette ligne mais c'est comme si le prog s'arretait la: pas moyen d'aller a la ligne suivante!
le fichier texte est bien en place et il contient ce qu'il faut.

que faire?
merci d'avance!

1 réponse

jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   934
 
D'abord, ton buffer fait 15 bytes au lieu de 16.
Si tu veux lire des lignes de texte, ajuste la taille de ton buffer et utilise fgets

char *fgets(char *s, int size, FILE *stream);
fgets() reads in at most one less than size characters from stream and stores them into the buffer pointed to by s. Reading stops after an EOF or a newline. If a newline is read, it is stored into the buffer. A '\0' is stored after the last character in the buffer.

FREAD(3) Linux Programmer's Manual FREAD(3)



NAME
fread, fwrite - binary stream input/output

SYNOPSIS
#include <stdio.h>

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

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

DESCRIPTION
The function fread reads nmemb elements of data, each size bytes long, from the stream pointed to
by stream, storing them at the location given by ptr.

The function fwrite writes nmemb elements of data, each size bytes long, to the stream pointed to
by stream, obtaining them from the location given by ptr.

RETURN VALUE
fread and fwrite return the number of items successfully read or written (i.e., not the number of
characters). If an error occurs, or the end-of-file is reached, the return value is a short item
count (or zero).

fread does not distinguish between end-of-file and error, and callers must use feof(3) and fer­
ror(3) to determine which occurred.

CONFORMING TO
The functions fread and fwrite conform to ANSI X3.159-1989 (``ANSI C'').

SEE ALSO
feof(3), ferror(3), read(2), write(2)



BSD MANPAGE 1996-05-17 FREAD(3)


Gates gave us the windows.
Linux gave us the whole house....
0