Problème stockage données

romauto750 Messages postés 45 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 12 janvier 2012 - 8 avril 2008 à 17:06
romauto750 Messages postés 45 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 12 janvier 2012 - 9 avril 2008 à 11:15
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

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
8 avril 2008 à 17:47
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));
0
romauto750 Messages postés 45 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 12 janvier 2012
8 avril 2008 à 17:56
Je vais regarder de ce côté et je vous tiens au courant.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
8 avril 2008 à 18:48
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 = ...
}
0
romauto750 Messages postés 45 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 12 janvier 2012
9 avril 2008 à 11:15
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);
0
Rejoignez-nous