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 -
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!
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!
A voir également:
- Un fread qui n'en fait qu'a sa tete (C++)
- Tête de parabole défectueuse - Forum TNT / Satellite / Réception
- Comment savoir si tête LNB est bien alimentée - Forum TV & Vidéo
- Impossible de supprimer en-tête word ✓ - Forum Word
- L'en-tête du document comporte une information qui n’apparaît pas à l'impression car elle est de couleur blanche. de quelle information s'agit-il ? ✓ - Forum LibreOffice / OpenOffice
- En tête qui n'apparaît pas ✓ - Forum Bureautique
1 réponse
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....
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....