Pb lecture dans un fichier en C

Fermé
sophieeeeee Messages postés 1395 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 18 septembre 2008 - 5 juin 2008 à 15:33
juanpablo Messages postés 142 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 16 juin 2008 - 5 juin 2008 à 17:09
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
A voir également:

9 réponses

shuya89 Messages postés 470 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 28 novembre 2014 39
5 juin 2008 à 15:36
pk je ne voit pas de fopen ni de fread?
0
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(...
0
sophieeeeee Messages postés 1395 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 18 septembre 2008 53
5 juin 2008 à 15:40
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.
0
sophieeeeee Messages postés 1395 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 18 septembre 2008 53
5 juin 2008 à 15:45
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
La fonction _read attend un handle en premier paramètre, hors tu passes un int. Ca pourrait être ça
0
sophieeeeee Messages postés 1395 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 18 septembre 2008 53
5 juin 2008 à 16:25
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?
0
Francois Pé
5 juin 2008 à 16:36
C'est quoi ton fichier? Il est en txt?
0
sophieeeeee Messages postés 1395 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 18 septembre 2008 53
5 juin 2008 à 16:45
oui
0
juanpablo Messages postés 142 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 16 juin 2008 10
5 juin 2008 à 17:09
salut
le printf suppose que buffer est une chaine ( zéro final) ce qui n'est pas sûr
vois avec buffer[size] = 0 avant printf et ajustes le malloc
0