Problème stockage données

Signaler
Messages postés
46
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
12 janvier 2012
-
Messages postés
46
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
12 janvier 2012
-
Bonjour à tous,


Je me tourne vers vous car je bloque sur un point. Voici mon problème :


J'ai plusieurs fichiers qui sont composé de plusieurs colonnes avec des titres pour chaque colonne comme l'exemple suivant :


Ville; Pays; CodeRegion
Vitrolles; France; 05
Marseille; France; 05
...etc


Cependant, le nombre de colonnes et le titre des colonnes varient en fonction des fichiers.


Je dois récupérer le nombre de colonnes et leur titre, ça c'est bon et ensuite je dois pour chaque ligne récupérer chaque élément (Ville, pays,..). Je sais récupérer les élèments mais après c'est là que je bloque pour les stocker, comment faire ? Utiliser quoi ?


Etant donné que le nombre de colonnes varient quelqu'un voit-il comment faire ?


J'ai pensé aux tableaux mais je sais pas combien je dois en avoir à l'avance, idem pour les structures.


De l'aide svp !!


Merci d'avance.

4 réponses

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Si taille variable pense allocation dynamique de mémoire
ex. créer un tableau de n entiers :
int n=...;
int *pArray=(int*)malloc(n*sizeof(int));
Messages postés
46
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
12 janvier 2012

Je vais regarder de ce côté et je vous tiens au courant.
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Tu créés une structure contenant le nom, le pays et le numéro:

struct MyStruct
{
    std::string ville;          // ou char[SIZE] selon tes convictions.
    std::string pays;
    int numero;
}

Puis tu utilises un conteneur pour faire devoir t'embeter avec les allocations:

std::vector<MyStruct> maListeDePays;
myListeDePays.reserve(XX) si tu as une idée de la taille.

while (tant que tu as des lignes dans ton fichier)
{
    maListeDePays.push_back(MyStruct());
    MyStruct & laStruct = maListeDePays.back();

    laStruct.ville = ...
    laStruct.pays = ...
    laStruct.numero = ...
}
Messages postés
46
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
12 janvier 2012

Bonjour,

Je suis toujours sur mon problème, j'ai fais le code suivant et quelqu'un pourrait-il me dire si cela marche vraiment ?

Je rappel que mes fichiers sont de type :

Exemple1; Exemple2;   Exemple3
Val1; Val2; Val3;
Val11; Val21; Val31

Voici mon code :

FILE* inputFile;

char strLine[255];

char Separator[] =
";";

char* strLineSep;

int inbLine = 1;

int iLineSep=0 ;
char **tab NULL; inputFile fopen(

"C:\\monfichiertexte",
"r" );
/* ouverture de mon fichier */

if(inputFile == NULL) AfxMessageBox(
"erreur ouverture fichier");

// Allocation de mon tableau avec pour le moment une seule ligne
tab = (
char **) malloc (inbLine *
sizeof (
char*));

// Tant que j'ai pas atteins la fin de mon fichier
while (!feof(inputFile)) {

// Je saisie ma ligne
fgets (strLine , 100 , inputFile);

// découpage de ma chaine
strLineSep = strtok (strLine,Separator);

// Pour déterminer le nombre d'élément que je vais avoir
iLineSep = 0;

// Tant que j'ai des éléments dans ma chainewhile (strLineSep !NULL) { tab[iLineSep] (

char *) malloc (
sizeof (
char)*iLineSep);
// J'alloue l'espace pour chaque élément tab[iLineSep] = strLineSep;

// J'insère ma chaine séparéestrLineSep = strtok (NULL, Separator);

// Je prends l'élément suivantiLineSep++;

}

inbLine++;

tab = (

char **) realloc (NULL, inbLine *
sizeof (
char*));
// Je réalloue l'espace de tab en fonction de mon nombre de ligne}

fclose (inputFile);

free(tab);