Probleme de lecture de fichier en c
Fermé
darksamor
Messages postés
7
Date d'inscription
samedi 7 mars 2009
Statut
Membre
Dernière intervention
7 mars 2009
-
7 mars 2009 à 15:09
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 - 8 mars 2009 à 12:39
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 - 8 mars 2009 à 12:39
A voir également:
- Probleme de lecture de fichier en c
- Fichier rar - Guide
- Fichier host - Guide
- Confirmation de lecture whatsapp - Guide
- Fichier iso - Guide
- Comment ouvrir un fichier epub ? - Guide
7 réponses
dubcek
Messages postés
18744
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
4 septembre 2024
5 617
7 mars 2009 à 15:20
7 mars 2009 à 15:20
hello
(de 6 à 7 chiffres aprés la virgule à plus de 4000)
4000 chiffres aprés la virgule ?
(de 6 à 7 chiffres aprés la virgule à plus de 4000)
4000 chiffres aprés la virgule ?
darksamor
Messages postés
7
Date d'inscription
samedi 7 mars 2009
Statut
Membre
Dernière intervention
7 mars 2009
7 mars 2009 à 16:13
7 mars 2009 à 16:13
j'ai modifié unn peu le programme:
j'ai supprimé le premier fgets et je force la lecture du fichier avec i
// while(fgets(ligne,12000,cas_a_traiter))
while(i<=380)
{
//printf("tpap=29 entrée dans la lecture");
for(j=0;j<=29;j++)
maintenant le premier caractere de la premiere ligne est bon :D mais c'est le seul :C
heeeeelp
j'ai supprimé le premier fgets et je force la lecture du fichier avec i
// while(fgets(ligne,12000,cas_a_traiter))
while(i<=380)
{
//printf("tpap=29 entrée dans la lecture");
for(j=0;j<=29;j++)
maintenant le premier caractere de la premiere ligne est bon :D mais c'est le seul :C
heeeeelp
darksamor
Messages postés
7
Date d'inscription
samedi 7 mars 2009
Statut
Membre
Dernière intervention
7 mars 2009
7 mars 2009 à 17:10
7 mars 2009 à 17:10
je probleme doit se trouver là dedeans mais je vois pas où:
if ((cas_a_traiter=fopen("cas_a_traiter.txt", "r"))==0) printf("erreur d'ouverture");
while(fgets(ligne,12000,cas_a_traiter))
{
//printf("tpap=29 entrée dans la lecture");
for(j=0;j<=29;j++)
{
fgets(ligne,sizeof(ligne),cas_a_traiter);
sscanf(ligne,"%f",&val);
input[i][j]=(fann_type) val;
}
i++;
}
if ((cas_a_traiter=fopen("cas_a_traiter.txt", "r"))==0) printf("erreur d'ouverture");
while(fgets(ligne,12000,cas_a_traiter))
{
//printf("tpap=29 entrée dans la lecture");
for(j=0;j<=29;j++)
{
fgets(ligne,sizeof(ligne),cas_a_traiter);
sscanf(ligne,"%f",&val);
input[i][j]=(fann_type) val;
}
i++;
}
dubcek
Messages postés
18744
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
4 septembre 2024
5 617
7 mars 2009 à 17:19
7 mars 2009 à 17:19
je me trompe ou bien tu lis une ligne ou 12000 char puis 29 lignes ou 11401 char ?
while(fgets(ligne,12000,cas_a_traiter)) { //printf("tpap=29 entrée dans la lecture"); for(j=0;j<=29;j++) { fgets(ligne,sizeof(ligne),cas_a_traiter); sscanf(ligne,"%f",&val); input[i][j]=(fann_type) val; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
darksamor
Messages postés
7
Date d'inscription
samedi 7 mars 2009
Statut
Membre
Dernière intervention
7 mars 2009
7 mars 2009 à 17:42
7 mars 2009 à 17:42
euh je suis pas sur de comprendre ta phrase désolé
si j'ai bien compris oui dans le premier code
maintenant je lit une ligne de 30 caractere, je la stocke dans le tableau "ligne" qui fait 12000 carac (pour avoir de la marge, je suis passé par un stade où j'essayais d'ouvrir tout le fichier d'un coup) *
puis je lit la ligne avec sscanf qui se charge de retrouver les float dans le fichier (basiquement il supprime les espaces et stocke le reste)
*je viens d'essayer de mettre un tableau que de 30 caracteres, erreur de segmentation directe, et si j'en met 150000 les chiffres enregistrés déconnent encore plus qu'avant donc j'ai un probleme d'allocation quelquepart mais où b*****d*m***** :'(:'(:'(
si j'ai bien compris oui dans le premier code
maintenant je lit une ligne de 30 caractere, je la stocke dans le tableau "ligne" qui fait 12000 carac (pour avoir de la marge, je suis passé par un stade où j'essayais d'ouvrir tout le fichier d'un coup) *
puis je lit la ligne avec sscanf qui se charge de retrouver les float dans le fichier (basiquement il supprime les espaces et stocke le reste)
*je viens d'essayer de mettre un tableau que de 30 caracteres, erreur de segmentation directe, et si j'en met 150000 les chiffres enregistrés déconnent encore plus qu'avant donc j'ai un probleme d'allocation quelquepart mais où b*****d*m***** :'(:'(:'(
darksamor
Messages postés
7
Date d'inscription
samedi 7 mars 2009
Statut
Membre
Dernière intervention
7 mars 2009
7 mars 2009 à 18:23
7 mars 2009 à 18:23
c'est bon j'ai trouvé
while(fgets(ligne,sizeof(ligne),cas_a_traiter))
{
//printf("tpap=29 entrée dans la lecture");
for(j=0;j<=29;j++)
{
// fgets(ligne,sizeof(ligne),cas_a_traiter);
// sscanf(ligne,"%f",&val);
// input[i][j]=(fann_type) val;
sscanf(ligne,"%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f ", &input[i][0], &input[i][1], &input[i][2], &input[i][3], &input[i][4], &input[i][5], &input[i][6], &input[i][7], &input[i][8], &input[i][9], &input[i][10], &input[i][11], &input[i][12], &input[i][13], &input[i][14], &input[i][15], &input[i][16], &input[i][17], &input[i][18], &input[i][19], &input[i][20], &input[i][21], &input[i][22], &input[i][23], &input[i][24], &input[i][25], &input[i][26], &input[i][27], &input[i][28], &input[i][29]);
}
en fait c'était le scanf qui était mal formaté
while(fgets(ligne,sizeof(ligne),cas_a_traiter))
{
//printf("tpap=29 entrée dans la lecture");
for(j=0;j<=29;j++)
{
// fgets(ligne,sizeof(ligne),cas_a_traiter);
// sscanf(ligne,"%f",&val);
// input[i][j]=(fann_type) val;
sscanf(ligne,"%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f ", &input[i][0], &input[i][1], &input[i][2], &input[i][3], &input[i][4], &input[i][5], &input[i][6], &input[i][7], &input[i][8], &input[i][9], &input[i][10], &input[i][11], &input[i][12], &input[i][13], &input[i][14], &input[i][15], &input[i][16], &input[i][17], &input[i][18], &input[i][19], &input[i][20], &input[i][21], &input[i][22], &input[i][23], &input[i][24], &input[i][25], &input[i][26], &input[i][27], &input[i][28], &input[i][29]);
}
en fait c'était le scanf qui était mal formaté
dubcek
Messages postés
18744
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
4 septembre 2024
5 617
8 mars 2009 à 12:39
8 mars 2009 à 12:39
essaye avec :
sscanf(ligne,"%{%f}", &input[i][0]);
%{%f} devrait lire autant de float qu'il y en a dans la ligne
sscanf(ligne,"%{%f}", &input[i][0]);
%{%f} devrait lire autant de float qu'il y en a dans la ligne
7 mars 2009 à 15:41