Extraire des données d'un fichier .txt en C
DouBiDou33
Messages postés
7
Statut
Membre
-
aletowk -
aletowk -
Bonjour,
Je suis confronté à un léger problème, je suis loin d'être un expert en C, et je ne me souviens plus comment faire pour extraire des données d'un fichier .txt pour ensuite les mettre dans un tableau.
Mes données sont présentées sous la forme suivante :
1988;+4,5
je voudrais récupérer la colone avec les dates et la placer dans un tableau, et la colone avec les chiffres (qui peuvent être de la forme +x.xx ou -x.xx) et la placer dans un autre tableau.
Je ne sais pas si je suis assez clair dans mes explications
Voici le morceau de code que j'ai pour l'instant (code que j'ai trouvé sur ce site, merci à son auteur ^^)
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fptrNO,*File;
int FileNum,i,j,k;
char *fich;
fptrNO = fopen("evolution CAC 40", "r");
if(fptrNO != NULL)
{
fscanf(fptrNO, "%d", &FileNum);
for (i = 1; i < FileNum + 1; i++)
{
fscanf(fptrNO,"%c",&fich);
printf("\n %c\n \n",fich);
File = fopen("evolution CAC 40","r");
if(File != NULL)
{
/* instructions */
}
}
}
fclose(fptrNO);
return EXIT_SUCCESS;
C'est donc dans la partie instructions que je ne sais pas quoi mettre, je me souviens d'un scanfile ou qqch dans le genre, mais je crois que c'était du C++, or je ne peux travailler qu'en C...
Merci des éventuelles réponses ^^
PS : je compile avec code blocks je sais pas si c'est utile de le préciser ^^
Je suis confronté à un léger problème, je suis loin d'être un expert en C, et je ne me souviens plus comment faire pour extraire des données d'un fichier .txt pour ensuite les mettre dans un tableau.
Mes données sont présentées sous la forme suivante :
1988;+4,5
je voudrais récupérer la colone avec les dates et la placer dans un tableau, et la colone avec les chiffres (qui peuvent être de la forme +x.xx ou -x.xx) et la placer dans un autre tableau.
Je ne sais pas si je suis assez clair dans mes explications
Voici le morceau de code que j'ai pour l'instant (code que j'ai trouvé sur ce site, merci à son auteur ^^)
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fptrNO,*File;
int FileNum,i,j,k;
char *fich;
fptrNO = fopen("evolution CAC 40", "r");
if(fptrNO != NULL)
{
fscanf(fptrNO, "%d", &FileNum);
for (i = 1; i < FileNum + 1; i++)
{
fscanf(fptrNO,"%c",&fich);
printf("\n %c\n \n",fich);
File = fopen("evolution CAC 40","r");
if(File != NULL)
{
/* instructions */
}
}
}
fclose(fptrNO);
return EXIT_SUCCESS;
C'est donc dans la partie instructions que je ne sais pas quoi mettre, je me souviens d'un scanfile ou qqch dans le genre, mais je crois que c'était du C++, or je ne peux travailler qu'en C...
Merci des éventuelles réponses ^^
PS : je compile avec code blocks je sais pas si c'est utile de le préciser ^^
A voir également:
- Extraire des données d'un fichier .txt en C
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Extraire une video youtube - Guide
1 réponse
Salut,
Voici une version fonctionnelle, mais qui ne gère pas les cas où le fichier est mal formaté.
Si tu souhaites une version plus robuste, t'as qu'à demander ;-))).
Cdlt
Voici une version fonctionnelle, mais qui ne gère pas les cas où le fichier est mal formaté.
Si tu souhaites une version plus robuste, t'as qu'à demander ;-))).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
FILE *fp=fopen("tmp.txt","r");
if(fp==NULL) {
fputs("erreur d'ouverture\n",stderr);
return 0;
} else {
int t_annee[10];
double t_nb[10];
char buffer[250];
size_t sz=0;
size_t i;
while(fgets(buffer,sizeof buffer,fp)) {
char buf_Nb[10];
if(sscanf(buffer,"%d;%9s",t_annee+sz,buf_Nb)==2) {
char *p=strchr(buf_Nb,',');
if(p!=NULL) *p='.';
}
t_nb[sz]=strtod(buf_Nb,NULL);
sz++;
}
fclose(fp),fp=NULL;
for(i=0;i<sz;i++)
printf("%d => %f\n",t_annee[i],t_nb[i]);
}
return 0;
}
Cdlt
Cordialement
Maintenant que cette étape est faite, j'ai un autre problème qui se présente :
Avec ces deux tableaux (les années, et l'évolution du CAC 40 depuis sa création), je doit faire un graphe, mais il me semblait qu'il y avait une fonction toute prète, mais non, donc comment je fais ? (j'ai appris à programmer sous LabWindows CVI, ça explique mon bas niveau, on avait des fonctions tte pretes ^^)
Donc comment dois-je faire pour, à partir des deux tableaux, tracer une courbe (plus nuage de points) et ensuite tracer des droites ? je sais pas si je suis assez clair, mais je saurais mieux l'expliquer avec un dessin ^^