1

He oui encore un... Je sens que je suis en train de faire une connerie (d'ailleurs ça bug donc ça confirme bien), mais je ne sais pas exactement laquelle :

J'ai un tableau destiné à recevoir des chaines, défini comme ça :
char *(*tbl_rtc)=NULL;
tbl_chr=calloc(20,sizeof(*tbl_chr));

Plus tart ds le prog, je veux rajouter une lettre à une des chaines qu'il contient :
tbl_rtc[int_chx][strlen(tbl_rtc[int_chx])+1]=0;
tbl_rtc[int_chx][strlen(tbl_rtc[int_chx])]=lettre;

Ça marche, mais quand je quitte le prog et que je le relance, j'ai une erreur "attribute of object" avec de l'hexa decimal... Et on peux pas appuyer sur ENTER, l'erreur s'affiche en boucle sad

Qu'est-ce qui ne va pas ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

toi tongue

Tu écris n'importe où en mémoire sans n'avoir rien alloué roll
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

3

Laisse moi deviner... C'est ce putain de double pointeur qui fait qu'une seule allocation suffit pas, donc il écrit n'importe ou ?

Faut que je fasse quoi ? sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

Fais plutôt ça : char (*ptr_rtc)[20]=NULL;

Tu auras ainsi un pointeur sur un tableau.
Parce qu'avec **ptr_rtc, je ne sais pas à quelle adresse (par rapport à ptr_rtc) le compilo va affecter les valeurs que tu lui demandes si tu écris une instruction du genre ptr_rtc[2][3]=8;
(J'ai demandé à Thibaut, mais j'ai pas compris son explication).

5

Mmm... Ça a l'air de marcher top

Mais avant je pouvais faire :

void programme(**pointeur)
{
*pointeur=bla bla bla;
}


en appelant par :

programme(&tbl_rtc[int_idc]);

ça modifiait mon pointeur. Maintenant ça me lance une erreur à la compilation, par quoi faut-il que je remplace ? (le pointeur est maintenant un char (*tbl_rtc)[50]=NULLwink
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

Je pense que tu peux faire ça :

void programme(char *pointeur)
{
pointeur=blablabla;
}

en appelant par :

programme(tbl_rtc[int_idc]);

7

Marche pas sad

Enfin si ça marche pour le passage d'argument, mais ce que je cherche à faire c'est que quand on modifie une valeur dans le sous programme ça affecte la variable dans le programme _main. Avant ça marchait mais avec ces modifs, j'y arrive plus sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

8

*** Problème résolu ***

Merci Jackiechan smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

question : le **, c'est pas utiliser pour les tableaux de pointeurs ça ? tu voulais bien stocker des chaines dedant Bob (en passant donc par un tab de pointeur) ? donc ça aurait du marcher ... mais bon, si le prob est résolu. cool

c'est pour Vertel ces modifs ?
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

10

En fait mon truc c'était un char **tableau[xx] grin

Un pointeur de pointeur de chaines... Très compliqué certes (du moins pour mon niveau) mais y'avais pas d'autre solutions. Le problème c'est qu'évidement quand on doit allouer de la mémoire ça devient chiant...

Heu sinon, non c pas pour vertel, c'est pour une lib de boite de dialogue.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

11

ouais sad, avec les tableaux de pointeurs, il faut allouer partie par partie, avec une for(), ce qui est chiant .... sadsad

lib de boites de dialogues ? pour le C ? yeaaahhh si tu le distribues, c'est trop chiant les boites de dialogues à faire ! winkwink
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

12

le **ptr c'est pour définir un double pointeur.
un tableau de pointeur, ça aurait été comme ça : *ptr[n].
Et la technique qu'il utilise, c'est un pointeur sur un tableau : (*ptr)[n]

13

Jackiechan > Oui la technique que j'utilise maintenant... Ça m'a bloqué qq trucs par rapport à ma méthode d'avant mais au moins ça marche...

Pim89 > Non, pas pour le C... Encore et toujours pour le basic tongue

Monolog1.gif
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

non non, je parle pour le passer à une fonction moi. wink tu as un tableau de pointeurs déclaré comme cela *point[], et tu le passes en fonction :

fonc(type **point)
c'est un pointeur sur un tableau : (*ptr)[n]


moi j'aime pas trop ce genre de déclaration, je préfère un *pt_tab et ensuite on se débrouille juste avec de l'arithmétique de pointeurs pour acceder à tous les éléments de ce tableau. oui
le **ptr c'est pour définir un double pointeur.


heu, peux tu éclaircir sa fonction à part le cas où c'est une déclaration d'un pointeur sur un tableau de pointeurs ?
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

15

Mmm... lé peut-être un peu long mon screenshot grin

Pfou... Entre les pointeurs, les chaines et les fonctions, j'en chie...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

16

char **ptr;

**ptr est un char.
*ptr est un pointeur sur un char.
ptr est un pointeur sur un pointeur sur un char.

Si je ne me trompe pas.

17

oué Bob, le shot est un peu long mais il en vaut la peine ! c'est super pour le BASIC ça ! ça customise un peu les boites sinistres du BASIC traditionnel ! toptoptop
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

18

Pour l'instant c'est bof... Par rapport aux boite traditionnelles ça n'apporte que les combobox (mix entre dropdown et request), le centrage, et le choix de la position des elements...

Un fois que ça marchera faudra que j'ajoute plein d'options sympa et je foutrais ça à Interum comme démonstration.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

19

jackiechan91 : tu as mal appris la leçon wink C'est tout l'inverse !!! attention
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

20

Tu n'as pas compris ce qu'il voulait dire à mon avis.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

21

exact attention
J'ai rien dit jackiechan91 wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.