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
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
A voir également:
- Pb lecture dans un fichier en C
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
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
5 juin 2008 à 15:36
pk je ne voit pas de fopen ni de fread?
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(...
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
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.
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
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.
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
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
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?
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?
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
5 juin 2008 à 16:45
oui
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
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
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