Pb lecture dans un fichier en C
sophieeeeee
Messages postés
1396
Date d'inscription
Statut
Membre
Dernière intervention
-
juanpablo Messages postés 142 Date d'inscription Statut Membre Dernière intervention -
juanpablo Messages postés 142 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
voila j'ai un probleme dans mon programme: voici mon code : int MessSpecInit(void)
{
void * buffer;
unsigned int size;
struct stat buf;
int f;
f =_open("essai.txt", _O_RDONLY, 0);
if(-1==stat("c:/essai.txt",&buf))
{
return(0);
}
else
{
printf("la taille du fichier est : %d octets",buf.st_size);
size = buf.st_size;
}
buffer= malloc(size);
_read(f,buffer,size);
printf("le fichier contient :%s",buffer);
}
et la ca bloque a cause de la fonction _read, je ne comprend pas pourquoi? quelqu'un aurait une idée???Merci d'avance
voila j'ai un probleme dans mon programme: voici mon code : int MessSpecInit(void)
{
void * buffer;
unsigned int size;
struct stat buf;
int f;
f =_open("essai.txt", _O_RDONLY, 0);
if(-1==stat("c:/essai.txt",&buf))
{
return(0);
}
else
{
printf("la taille du fichier est : %d octets",buf.st_size);
size = buf.st_size;
}
buffer= malloc(size);
_read(f,buffer,size);
printf("le fichier contient :%s",buffer);
}
et la ca bloque a cause de la fonction _read, je ne comprend pas pourquoi? quelqu'un aurait une idée???Merci d'avance
A voir également:
- Pb lecture dans un fichier en C
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
9 réponses
il me semble que _read est une fonction et va donc retourner un résultat ( -1 en cas d'échec sinon le nombre de ligne )
faire l=_read(...
faire l=_read(...
parce que C un peu compliqué : ce programme est destiné a du matériel embarqué donc je doit utilisé de sur la fonction _open après avec fread je n'y arrive pas.
j'ai essayer comme ca:
j=_read(f,buffer,size);
mais ca ne marche toujours pas j'ai une erreur a la compilation qui dit:
Debug assertion failed !
Program :...
Files: read.c
Line : 85
Expression : (fh >= 0 && (unsigned)fh <(unsigned)_nhandle)
For information on how jour program can cause an assertion failure, see the visual C++ documentation on asserts.
Je n'y comprend rien.
j=_read(f,buffer,size);
mais ca ne marche toujours pas j'ai une erreur a la compilation qui dit:
Debug assertion failed !
Program :...
Files: read.c
Line : 85
Expression : (fh >= 0 && (unsigned)fh <(unsigned)_nhandle)
For information on how jour program can cause an assertion failure, see the visual C++ documentation on asserts.
Je n'y comprend rien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci pour vos réponses. j'ai amélioré mon programme je ne sais pas trop comment et ca mache maintenant:
int MessSpecInit(void)
{
int f,j;
void * buffer;
unsigned int size;
struct stat buf;
f =_open("c:/essai.txt", _O_RDONLY,_S_IREAD );
if (f == -1)
{
perror( "ouverture du fichier impossible\n" );
}
else
{
printf( "ok fichier ouvert\n");
}
if(-1==stat("c:/essai.txt",&buf))
{
return(0);
}
else
{
printf("la taille du fichier est : %d octets\n",buf.st_size);
size = buf.st_size;
}
buffer= malloc(size);
if( buffer ==NULL)
{
printf ("pas assez de memoire\n");
}
else
{
printf ("reservation memoire ok\n");
}
j=_read(f,buffer,size);
if (j<= 0)
{
printf("erreur lecture\n");
}
else
{
printf("lecture ok\n");
}
printf("le fichier contient :%s\n",buffer);
}
mais lors du dernier printf a la fin ca m'affiche plein de caractère qui ne sont pas dans mon fichier.Pourquoi donc?
int MessSpecInit(void)
{
int f,j;
void * buffer;
unsigned int size;
struct stat buf;
f =_open("c:/essai.txt", _O_RDONLY,_S_IREAD );
if (f == -1)
{
perror( "ouverture du fichier impossible\n" );
}
else
{
printf( "ok fichier ouvert\n");
}
if(-1==stat("c:/essai.txt",&buf))
{
return(0);
}
else
{
printf("la taille du fichier est : %d octets\n",buf.st_size);
size = buf.st_size;
}
buffer= malloc(size);
if( buffer ==NULL)
{
printf ("pas assez de memoire\n");
}
else
{
printf ("reservation memoire ok\n");
}
j=_read(f,buffer,size);
if (j<= 0)
{
printf("erreur lecture\n");
}
else
{
printf("lecture ok\n");
}
printf("le fichier contient :%s\n",buffer);
}
mais lors du dernier printf a la fin ca m'affiche plein de caractère qui ne sont pas dans mon fichier.Pourquoi donc?