1

J'ai écrit un prog genre console comme dos et je voudrait fair un historique des chaine de caractère entrer pour pouvoir les retouver.
J'ai essayer avec des pointeurs de tableaux mais sans resultat j'ai du me planter.j'ai aussi essayer avec des tableaux de caractère a deux dimension mais jy arrive pas no pluis. Comment fair? Please Help Me.

2

3

un handle par chaîne de caractère, et au début de chaque bloc, tu stockes le handle du bloc suivant (et éventuellement du précédent)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

4

voici ce que j'avai écrit:

//.......................................
char chaine[24];//Chaine dans laquelle y avait la chaine tapée en cour
char *hist[8];
//.........................................
//quand j'entrait enter je faisait
for(i=7;i!=0;i--)
{
hist[i]=hist[i-1];
}
hist[0]=chaine;


le problème c est que je me retrouvait avec la meme chaine partout;

5

mets plutôt ton code dans des balises [pre], parce que là c'est tout moche smile

le problème c'est que quand tu stockes "la chaîne" dans hist[0], tu ne stockes en fait qu'un *pointeur* vers la chaîne; donc si tu modifies la chaîne après (en lisant une nouvelle ligne, par exemple), tu va aussi modifier le contenu de ce vers quoi pointe hist[0]... (même si le pointeur, lui, n'aura pas changé)

ce qu'il faut faire, c'est comme il a été dit plus haut, créer une nouvelle zone mémoire (avec malloc() par exemple) pour chaque chaîne, et stocker le contenu de la chaîne dedans (ce qui fait que le contenu entier sera sauvegardé, pas juste le pointeur)...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

6

7

Normal smile
l'instruction hist[0] = chaine; ne fait qu'affecter la valeur de l'adresse de ta chaine chaine à hist[0]. En gros, hist[0] ne devient plus qu'une autre manière d'écrire chaine, tous les deux désignent une même adresse, donc les mêmes données.
Il faut que tu déclares hist comme ceci : char hist[7][24]; et que tu copies à chaque fois le contenu de la chaine (strcpy).

(gros cross, je répondais au ./4)
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

8

ou utilises des handles pour les déréférencer, pour éviter de fragmenter la RAM
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

9

10

non, si tu utilises plein de bloc verrouillés, HeapAlloc ne pourra pas les bouger pour les coller et faire un gros bloc libre. Tu risques de te retrouver avec plein de petits blocs libres un peu partout dans la mémoire
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

11

./8 > Pourquoi ?

(ok, encore crossé)
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »