begin process at 2008 08 20 14:11:15
1 228 858 membres
224 nouveaux aujourd'hui
14 257 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème stockage données [ Windows / MFC ] (romauto750)

Problème stockage données le 08/04/2008 17:06:27

romauto750

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.


Re : Problème stockage données le 08/04/2008 17:47:24

juju12
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));

Re : Problème stockage données le 08/04/2008 17:56:51

romauto750

Je vais regarder de ce côté et je vous tiens au courant.


Re : Problème stockage données le 08/04/2008 18:48:06

luhtor
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 = ...
}

Re : Problème stockage données le 09/04/2008 11:15:18

romauto750
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
f
gets (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 chaine
while (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ée

strLineSep = strtok (NULL, Separator);

// Je prends l'élément suivant

iLineSep++;

}

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);



Classé sous : problème, récupérer, nombre, colonnes, stockage

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Boutique

Boutique de goodies CodeS-SourceS