Lecture d'un fichier texte, en language C
Dernière réponse : dans Programmation
Salut,
Pour lire les données dans un fichier j'ai utilisé le code suivant:
float INPUT[100];
FILE *ReadInput;
ReadInput = fopen ("c:\\signal.txt", "r") ;
for (int i=0 ; i<100 ; i++)
{
fscanf (ReadInput, "%f", &INPUT);
}
fclose (ReadInput) ;
Les elements dans le fichier signal.txt sont placés de cette maniere, par example:
0, 114.1268, 70.5342, -70.5342, -114.1268, -0.0000, 114.1268 , 70.5342 , -70.5342,
Et lorsque je verifie la copie que le tableau INPUT a prise , les elements sont plutot different:
0.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
Dois je changer l'alignement des elements dans le tableau de départ, qu'est ce qui peut bien causer cette difference. A mon avis, peut etre les elements sont mal interpretés!
Merci d'avance si vous en savez quelque chose!
Pour lire les données dans un fichier j'ai utilisé le code suivant:
float INPUT[100];
FILE *ReadInput;
ReadInput = fopen ("c:\\signal.txt", "r") ;
for (int i=0 ; i<100 ; i++)
{
fscanf (ReadInput, "%f", &INPUT);
}
fclose (ReadInput) ;
Les elements dans le fichier signal.txt sont placés de cette maniere, par example:
0, 114.1268, 70.5342, -70.5342, -114.1268, -0.0000, 114.1268 , 70.5342 , -70.5342,
Et lorsque je verifie la copie que le tableau INPUT a prise , les elements sont plutot different:
0.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
Dois je changer l'alignement des elements dans le tableau de départ, qu'est ce qui peut bien causer cette difference. A mon avis, peut etre les elements sont mal interpretés!
Merci d'avance si vous en savez quelque chose!
Autres pages sur : lecture fichier texte language
Lassé par la pub ? Créez un compte
et avec "%f, " dans le scanf ?
comment as-tu écrit le fichier ?
salut,
j'ai pas bien compris ce que tu veux dire par la! Au fait j'ai un fichier signal.txt et j'aimerais juste lire les données qui sont labas et la copie doit etre dans le tableau INPUT mais ca marche pas avec le code que j'ai utilisé!
Une idée a ce propos!
comment as-tu écrit le fichier ?
salut,
j'ai pas bien compris ce que tu veux dire par la! Au fait j'ai un fichier signal.txt et j'aimerais juste lire les données qui sont labas et la copie doit etre dans le tableau INPUT mais ca marche pas avec le code que j'ai utilisé!
Une idée a ce propos!
En regardant mieux ton code, j'ai remarqué que INPUT n'était jamais déplacé, donc tu écris tous les éléments du fichier dans le premier élément.
Le dernier de ton fichier doit être 0., ce qui explique que tu est 0 dans le premier et n'importe quoi dans les autres.
ou encore:
Le dernier de ton fichier doit être 0., ce qui explique que tu est 0 dans le premier et n'importe quoi dans les autres.
for (int i=0 ; i<100 ; i++)
{
fscanf (ReadInput, "%f", &INPUT[i]);
}
ou encore:
for (int i=0 ; i<100 ; i++)
{
fscanf (ReadInput, "%f", INPUT + i);
}
FILE *ReadInput;
ReadInput = fopen ("c:\\signal.txt", "r") ;
for (int i=0 ; i<100 ; i++)
{
fscanf(ReadInput, "%f", &INPUT);
}
fclose (ReadInput) ;
avec ce code je recois le meme result , le tableau INPUT donne toujours :
0.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
Ce qui veut dire que les elements dans le fichier signal.txt n'ont pas vraiment etaient lus tels qu'ils sont. Je ne vois pas ou est l'erreur!!
merci!
ReadInput = fopen ("c:\\signal.txt", "r") ;
for (int i=0 ; i<100 ; i++)
{
fscanf(ReadInput, "%f", &INPUT);
}
fclose (ReadInput) ;
avec ce code je recois le meme result , le tableau INPUT donne toujours :
0.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
Ce qui veut dire que les elements dans le fichier signal.txt n'ont pas vraiment etaient lus tels qu'ils sont. Je ne vois pas ou est l'erreur!!
merci!
Bonjour
J'a recompilé et executé mais c'est toujours les meme results!
Voici comment les elements sont placés dans le fichier signal.txt
ils sont alignés de cette maniere :
0, 114.1268, 70.5342, -70.5342, -114.1268, -0.0000, 114.1268 , 70.5342 , -70.5342, -114.1268 , -0.0000
et pour verifier si le tableau INPUT contient exactement les meme données j'ai fait :
for( int n = 0; n<100; n++){
printf("%f\n", INPUT[n]);
}
et je recois plutot ca comme results
0.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
Enfin je ne sais pas pourquoi ca marche pas!
merci!
J'a recompilé et executé mais c'est toujours les meme results!
Voici comment les elements sont placés dans le fichier signal.txt
ils sont alignés de cette maniere :
0, 114.1268, 70.5342, -70.5342, -114.1268, -0.0000, 114.1268 , 70.5342 , -70.5342, -114.1268 , -0.0000
et pour verifier si le tableau INPUT contient exactement les meme données j'ai fait :
for( int n = 0; n<100; n++){
printf("%f\n", INPUT[n]);
}
et je recois plutot ca comme results
0.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
-107374176.000000
Enfin je ne sais pas pourquoi ca marche pas!
merci!
salut,
Cricky à raison, ton 0 fait planter ta lecture puisque ce n'est pas un float mais un entier.
Personnellement je n'aime pas le fscanf et ses copains, je préfère un bon fread mais c'est une question de goût. Ceci oblige d'avoir une structure stricte du fichier et de ne pas essayer d'interpreter des valeurs qui n'ont rien à voir.
Et un float écris en texte dépend de la zone géographique où est executé ton code, alors que s'il est écrit en binaire y'a pas de problème ... mais on ne fait parfois pas ce que l'on veut.
Cricky à raison, ton 0 fait planter ta lecture puisque ce n'est pas un float mais un entier.
Personnellement je n'aime pas le fscanf et ses copains, je préfère un bon fread mais c'est une question de goût. Ceci oblige d'avoir une structure stricte du fichier et de ne pas essayer d'interpreter des valeurs qui n'ont rien à voir.
Et un float écris en texte dépend de la zone géographique où est executé ton code, alors que s'il est écrit en binaire y'a pas de problème ... mais on ne fait parfois pas ce que l'on veut.
Perso j'ai rélaisé il y a quelques jours un programme de conversion de format de fichier en C, qui utilise donc abondamment les fonction de lecture et je te conseil vraiment d'utiliser la fonction "fgets" pour lire le fichier ligne par ligne puis s'analyser chaque ligne avec un "sscanf".
Quelque chose comme :
i=0;
while (NULL != fgets(buf,sizeof(buf),ReadInput){
sscanf(buf,"%f",&INPUT[i++]);
}
Attention ca c'est dans le cas d'un fichier avec un réel par ligne !
Quelque chose comme :
i=0;
while (NULL != fgets(buf,sizeof(buf),ReadInput){
sscanf(buf,"%f",&INPUT[i++]);
}
Attention ca c'est dans le cas d'un fichier avec un réel par ligne !
//voila ce code
sa marche sa affiche tt ce qui est dans le ficier
//t avai un probleme de declaration des variable et en+ fau pas mettre les vergule mais garder les
//espace merci ton code ma aide
#include<stdio.h>
#include<string.h>
void main(){
int INPUT[100];
FILE *ReadInput;
ReadInput = fopen("c:\\signal.txt","r") ;
for (int i=0 ; i<100 ; i++)
{
fscanf(ReadInput,"%i",&INPUT);
}
fclose(ReadInput) ;
for (int i=0 ; i<11 ; i++)
{
printf("%i\n",INPUT);
}
}
sa marche sa affiche tt ce qui est dans le ficier//t avai un probleme de declaration des variable et en+ fau pas mettre les vergule mais garder les
//espace merci ton code ma aide
#include<stdio.h>
#include<string.h>
void main(){
int INPUT[100];
FILE *ReadInput;
ReadInput = fopen("c:\\signal.txt","r") ;
for (int i=0 ; i<100 ; i++)
{
fscanf(ReadInput,"%i",&INPUT);
}
fclose(ReadInput) ;
for (int i=0 ; i<11 ; i++)
{
printf("%i\n",INPUT);
}
}
Bonjour tout le monde, j'ai un petit problème. EN fait je souhaite lire des données à partir d'un fichier texte. Les données dont j'ai besoin commencent à partir de la 7 éme ligne et sur chaque ligne j'ai besoin de lire 3 données séparées les unes aux autres par un espace. Sauf que je n'arrive pas à me positionner à la 7 ème ligne. Une idée SVP??
Je vous remercie d'avance!
Je vous remercie d'avance!
Une structure ville avec indice et les coordonnées à savoir x et y. Le passage du tableau des structures se fait par un pointeur donc en gros faudrait que j'ai *v.indice=i et x et y les valeurs qui suivent l'indice.
La forme du fichier est la suivante:
NAME : a280
COMMENT : drilling problem (Ludwig)
TYPE : TSP
DIMENSION: 280
EDGE_WEIGHT_TYPE : EUC_2D
NODE_COORD_SECTION
1 288 149
2 288 129
3 270 133
4 256 141
5 256 157
6 246 157
7 236 169
8 228 169
9 228 161
10 220 169
11 212 169
12 204 169
13 196 169
14 188 169
15 196 161
16 188 145
17 172 145
18 164 145
19 156 145
20 148 145
21 140 145
Et merci d'avance
La forme du fichier est la suivante:
NAME : a280
COMMENT : drilling problem (Ludwig)
TYPE : TSP
DIMENSION: 280
EDGE_WEIGHT_TYPE : EUC_2D
NODE_COORD_SECTION
1 288 149
2 288 129
3 270 133
4 256 141
5 256 157
6 246 157
7 236 169
8 228 169
9 228 161
10 220 169
11 212 169
12 204 169
13 196 169
14 188 169
15 196 161
16 188 145
17 172 145
18 164 145
19 156 145
20 148 145
21 140 145
Et merci d'avance
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumLecture d'un fichier texte java
- ForumLecture et ecriture d'un fichier texte
- ForumCreer un fichier texte en language c
- solutionsC lecture d'un fichier txt
- ForumC lecture fichier texte
- ForumC lecture mot fichier texte tabulation espace
- ForumWindev lecture fichier texte
- ForumLecture de fichier texte c
- ForumLecture de fichier texte en php
- ForumLecture fichier texte java
- Voir plus