Chargement de données

cur2009 Messages postés 9 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 5 décembre 2013 - 14 juin 2011 à 10:54
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 14 juin 2011 à 16:39
Bonjour,

J'ai besoin de votre aide pour savoir comment je pourrai charger des données à partir d'un fichier texte et les stocker dans un graphe sous c ? voici qq lignes de mon ficher :

8 1 48 4 4
500 200
500 200
500 200
500 200
500 200
500 200
500 200
500 200
500 200

0 4.163 13.559 0 0 0 0 0 1000
1 21.387 17.105 0 0 0 0 0 1000
2 -36.118 49.097 0 0 0 0 0 1000
3 -31.201 0.235 0 0 0 0 0 1000
4 -29.73 64.136 2 12 4 1 15 354 509
5 -30.664 5.463 7 8 4 1 15 234 401


Merci de me donner qq pistes.
Cordialement,

3 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
14 juin 2011 à 14:38
salut,

Il faut que tu utilises les streams "ifstream" pour "input file stream". La fonction fscanf permettra de lire les données sous forme ascii et les convertira automatiquement dans le type voulu.

@++
0
cur2009 Messages postés 9 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 5 décembre 2013
14 juin 2011 à 15:34
salut,

j'ai fait ce programme mais je ne sais pas pourquoi il m'affiche des erreurs :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *get_next_line (FILE * stream)
{
char *line = NULL;
if (stream != NULL)
{
size_t size = 2;
line = malloc (sizeof *line * size);
if (line != NULL)
{
if (fgets (line, size, stream) != NULL)
{
int end = 0;
char *p;
while (!end && (p strchr (line, '\n')) NULL)
{
char *tmp = realloc (line, size * 2);
if (tmp != NULL)
{
end fgets (tmp + size - 1, size + 1, stream) NULL;
size *= 2;
line = tmp;
}
else
{
free (line), line = NULL;
end = 1;
}
}
if (!end)
{
*p = 0;
}
}
else
{
free (line), line = NULL;
}
}
}
return line;
}

#ifdef TEST
static int process (char const *fname)
{
int err = 0;

FILE *pr01 = fopen (fname, "r");
if (fp != NULL)
{
char *line;
while ((line = get_next_line (fp)) != NULL)
{
printf ("'%s'\n", line);
free (line);
}

}
else
{
perror (fname);
err = 1;
}

return err;
}

int main (void)
{
process ("main.c");
return 0;
}
#endif


fichier nommé : (pr01.txt)

merci
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
14 juin 2011 à 16:39
re,

ici, la documentation de la libc.

beaucoup d'erreurs:
char *line = NULL;
...
size_t size = 2;
line = malloc (sizeof *line * size);

tu as défini line = 0, impossible d'obtenir *line, c'est une erreur d'acces mémoire qui donnera "Erreur de segmentation".

@++
0
Rejoignez-nous