Comment remplir un tableau

apu04 Messages postés 29 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 9 juillet 2013 - 18 janv. 2010 à 15:39
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 18 janv. 2010 à 20:14
Bonjour à tous,

j'aimerais savoir comment faire pour remplir un tableau avec des chaînes des caractères que je récupère à partir d'un fichier texte, j'ai utilisé la fonction "memcpy" et ça marche par contre je sais pas comment faire pour que à chaque passage en boucle la nouvelle chaîne s'ajoute dans mon tableau,


Merci d'avance.

5 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
18 janv. 2010 à 16:28
Hello,
Si tu as une boucle, tu as un itérateur.
Si tu as un itérateur, tu peux te déplacer dans ton tableau.
Si tu peux te déplacer dans ton tableau, tu peux le remplir.


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
apu04 Messages postés 29 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 9 juillet 2013
18 janv. 2010 à 16:46
bin non pas forcément, j'ai une boucle while,
je m'explique je balaye un fichier texte, je récupère une chaîne de caractère( j'ignore la longueur de cette chaîne) , je la Stoke dans un tableau et cette opération se répète tant que la condition de ma boucle while est satisfaite, alors comment je peux continuer à remplir mon tableau tout en gardant ce que j'ai déjà stocké,

Merci encore une fois.
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
18 janv. 2010 à 17:20
Tu as tout à fait le droit d'avoir une condition dans le while ET un itérateur. Tu ajoutes un compteur que tu mets à jour dans ta boucle.

_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
18 janv. 2010 à 17:23
Tu peux rajouter un itérateur dans ce cas. Tu l'incrémenteras à chaque nouvelle boucle et il te permettra de parcourir ton tableau.
Attention toutefois à ce que ton itérateur reste dans les bornes de ton tableau.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 janv. 2010 à 20:14
C'est l'éternelle question, on la retrouve ici au moins 2 fois par mois.
Au vu de comment elle est exposée, ça sent le contre productif à fond. Vu que tu veux les stocker, tu auras donc tout le contenu du fichier en mémoire, inutile alors de faire des recopies.
Ce dont tu as besoin, c'est du nombre de lignes.

1) Demander au system la taille du fichier (sizeFL).
2) Alloc buffer (pMem) de sizeFL + 1 rempli de zéros (VirtualAlloc sous Windows).
3) Ouverture fichier, lecture en 1 seule fois et fermeture illico.
4) Comptage des CHR(10):
  DWORD i = sizeFL - 1;
  DWORD nlines = 0;
  do {
    if(pMem[i] == 10) {
      pMem[i] = 0;
      nlines++;
    }
  } while(0 <= (long) --i);
5) Alloc tableau char* pLines de taille nlines.
6) DWORD pos = 0;
   for(i = 0; i < sizeFL - 1; i++) {
     if(pMem[i] == 0) pLines[pos++] = &pMem[i + 1];
   }


Voila fini, on a le buffer contenant le texte et le tableau de pointeurs sur les différentes lignes.
Tout ceci s'effectuera ultra rapide sans aucune recopie.

En espérant qu'il n'y ait pas trop de fautes de frappe, la textbox du forum c'est pas l'idéal pour coder.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous