1

pourquoi quand je lance ça:

FILE *f;
void _main(void)
{
char s1[6],s2[6],n1[6],n2[6];

f=fopen("labhs","wb")
fputs("000000",f);
fputs("REM1 ",f);
fputs("000000",f);
fputs("REM2 ",f);
fputc(0,f),
fputs("LAB",f);
fputc(0,f);
fputc(OTH_TAG,f);
fclose(f);

f=fopen("labhs","rb")
fgets(s1,7,f);
fgets(n1,7,f);
fgets(s2,7,f);
fgets(n2,7,f);
fclose(f);
ClrScr();
DrawStr(10,10,s1,A_REPLACE);
ngetchx();
}

ça ne m'affiche pas "000000"?

Vive le coding gba.
www.codegba.fr.st

2

Parce qu'il faut réserver un caractère pour le '\0' à chaque fois:
char s1[7],s2[7],n1[7],n2[7];
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é

3

merveilleux ça marche!
mais pourquoi ça fait ça pour s1 alors que si je veux afficher s2 y'a pas de prob.
confus
Vive le coding gba.
www.codegba.fr.st

4

- Parceque tes tableaux étant déclarés l'un à la suite de l'autre, sont alloués l'un à la suite de l'autre par le compilateur.
- Cela implique que, comme tes tableaux ne peuvent contenir que 7 octets, le 8ème caractère écrit par fgets (le zéro de fin -que tu oubliais-) est en fait placé dans le premier élément du buffer (tableau) suivant.
- Il est important de comprendre pour suivre, donc relis les points précédents si tu as du mal, avant de poursuivre :
- dans ton code, tu remplis d'abord s1. Le zéro terminal va donc être écrit dans le premier élément du buffer suivant : s2
- ensuite, tu remplis n1. Heureusement que tu le fait avant s2, tu va comprendre pourquoi wink
- puis tu rempli s2, son zéro va être placé dans son 8ème élément... qui n'existe pas, et qui correspond en fait au premier élément de n1.
- n1 a déjà été rempli, tu n'y touches plus, donc le zéro qui vient d'être placé dans son premier élément ne va pas être effacé.
=> s2 se termine bien par un zéro, contrairement à s1 dont le zéro a été écrasé par le remplissage s2.
[edit]Edité par Thibaut le 01-03-2002 à 22:09:29[/edit]
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.