60

+1 ./59.
La lisibilité et la portabilité du code, qui sont deux éléments de la maintenabilité, sont diminuées par le mélange de code et de déclarations (autorisé par C99).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

61

Ouaip, j'ai eu deux adress errors mais j'ai pas tilté ^^

62

Bon, j'me sens hypra con, j'arrive pas à déclarer une variable string xD.

*retourne chercher ses bouquins de C*

[EDIT]
char str[] = "Tadadidou"; fonctionne sur Ti ou c'est pas la même notation ? xD

63

Si si, c’est bien ça. Pourquoi, tu obtient une erreur ?
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. »

64

Il n'y aurait pas une grosse différence entre {'a', 'b'} et "ab" ? Je pense que le premier indique au compilateur le contenu à copier dans le tableau et le deuxième est un pointeur vers un tableau. C'est peut-être l'interprétation de GTC. Ça marche avec GCC et TIGCC ?
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.

65

./64 > D'un point de vue purement fonctionnel (i.e. sans entrer dans les détails techniques où la j'ai quelques doutes), les deux sont normalement équivalents, si on n'oublie pas, comme tu l'a fait ici, que les chaînes en C se terminent par un caractère nul wink
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

66

En effet !
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.

67

Oui, normalement pour définir un tableau il faut décrire ses éléments un par un entre accolades, mais pour les chaînes de caractères on peut écrire une chaîne entre guillemets.
Notons que :
const char *str1 = "foo";
Est différent de :
const char str2[] = "bar";
En effet, str1 est un pointeur vers la chaîne de caractères « foo », tandis que str2 est un tableau de char.
Autrement dit, l’expression suivante sera valide :
str1 = "boo";
Mais pas celle-ci :
str2 = "far";
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. »

68

(En fait const char str2[] = "bar"; est équivalent à const char * const str2 = "bar";)
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. »

69

./67 > Bah déjà, pour être à égalité, tu devrais comparer char * const str1 avec const char str2[] parce que sinon les types ne sont même pas compatibles.
Ensuite, str2 = str1 ne fonctionne peut être pas, mais str1 = str2 si... La différence est beaucoup plus floue qu'une simple différence pointeur ≠ tableau tongue
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

70

GoldenCrystal (./69) :
./67 > Bah déjà, pour être à égalité, tu devrais comparer char * const str1 avec const char str2[] parce que sinon les types ne sont même pas compatibles.
Non, cf ./68
Ensuite, str2 = str1 ne fonctionne peut être pas, mais str1 = str2 si...
Oui, cf ./67
La différence est beaucoup plus floue qu'une simple différence pointeur ≠ tableau tongue
Si, puisqu’un tableau n’est rien d’autre qu’un pointeur constant.
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. »

71

Hmm ouais autant pour moi j'ai zappé le const pour str1 cheeky
Mais par contre non, un tableau n'est pas un pointeur constant. Un tableau est un pointeur. C'est juste toi qui a décidé de mettre le const là (il est justifié) tongue
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

72

Sasume (./68) :
(En fait const char str2[] = "bar"; est équivalent à const char * const str2 = "bar";)

Non. Si tu écris ça à l'intérieur d'une fonction, dans le premier cas, ce sera recopié sur la pile, pas dans le deuxième (donc le deuxième est préférable). Si tu écris ça en global (à l'extérieur des fonctions), dans le deuxième cas, un pointeur (4 octets + 1 relogement) sera créé, pas dans le premier (donc le premier est préférable dans ce cas).
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é

73

Raaaahhh mais un lea str1(pc),a0 est tellement plus simple hehe

74

./71roit d’écrire ça : int main(int argc, char *argv[]) {   int tab[10];   tab++;      int * const ptr;   ptr++; } Hmm, pourquoi un tableau serait plus un pointeur qu’un pointeur constant ? On n’a pas le d
(mais les deux messages d’erreurs — lignes 4 et 7 — sont différents)
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. »

75

Bon, j'y suis presque.

J'code un autre truc en parallèle ^^ : locker de calc.

Bref, au début de ma _main, je déclare le mot de passe
char pass[] = "Tradabadam";

Ensuite, j'initialise la variable contenant la valeur de la touche pressée et je la mets à 0.

Puis, dans un while(key != 13), je fais ça:
short buff[] = "";
//H c'est ce qui contient la chaîne entrée par l'utilisateur.
while(key != 13)
{
   if(kbhit())
   {
      key = ngetchx();
      h[strlen(h)+1] = fgetchar();
   }
   DrawStr(6,36,h,1);
}


Mais le résultat n'est pas génial, un seul appui sur deux insère la touche dans la chaîne. En plus, ça me le print aux coordonées (0,0);

Du coup, ben moi, je sèche grin.

Sinon pour le pong, j'ai juste un framerate hyperélevé quoi :O.

76

Vire le if (kbhit()) et ça devrait mieux marcher. La gestion des touches de TIGCC ne respecte pas trop la norme je crois. De toute façon, ngetch() bloque déjà l'execution du programme en attendant l'appui sur une touche, il n'y a pas besoin du kbhit.

Par contre, ton tableau de caractères a une taille nulle. Ca va planter à coup sur quand tu le rempliras (corruption de données). Oublie pas non plus qu'une chaîne de caractères doit se terminer par 0 ! Sinon, aucune fonction standard ne pourra deviner sa longueur et fonctionner correctement (strlen, DrawStr).
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.

77

Thibaut (./76) :
Ca va planter à coup sur

Ya rien de sûr en fait, mais il se dirige droit vers des bugs aléatoires, ça c'est clair. hehe

78

Tu dois utiliser la valeur renvoyée par ngetchx plutôt que de faire un appel à fgetchar.

Et au fait, n’utilise jamais la variable buff, tu risquerais de faire planter ton programme…
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. »

79

Le tableau a la taille 1, pas 0. Mais il ne peut effectivement contenir que la chaîne vide si on veut qu'elle soit terminée correctement.
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é

80

Kevin Kofler (./79) :
il ne peut effectivement contenir que la chaîne vide
Bon, puisqu'on se plait à défoncer des mouches, je retorque que c'est inextact. Il peut contenir autre chose : un tableau de caractères de taille 1.
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.

81

Mais ce ne sera pas une chaîne terminée (cf. la fin de ma phrase, que tu as coupée roll).
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é

82

Ce ne sera pas une chaîne tout court.
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.

83

Folco (./77) :
il se dirige droit vers des bugs aléatoires,


J'avais vu ^^
Sasume (./78) :
Tu dois utiliser la valeur renvoyée par ngetchx plutôt que de faire un appel à fgetchar.

Et je fais comment ? je sais faire ça en Basic mais avec les fonctions de Ti j'sais pas trop :s *part fouiller*

Sasume (./78) :
Et au fait, n'utilise jamais la variable buff, tu risquerais de faire planter ton programme!


C'est noté smile

84

ben h[indice] = key au lieu du fgetchar.
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. »

85

Et n'oublie pas, donne une taille au buffer en écrivant char h[64]. 64 ou toute autre taille suffisante.

Au fait, ton ="blabla" n'est pas refusé par le compilateur finalement ?
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.

86

./85 > Oui oui ça fonctionne x)

./84
> Je vois pas trop ?_?
Si j'ajoute un entier, ça stockera le caractère ASCII correspondant dans la chaîne ? oO

87

Non, ça fera juste un pointeur vers un tableau non-initialisé de x octets de long.

88

J'suis à l'ouest là x'D. Ca va crasher ? Tu m'aurais pas dit ça sinon #okay#

89

Hm, je ne suis pas sûr que ./87 réponde à la bonne question.

./86 Oui, cf la doc : http://tigcc.ticalc.org/doc/kbd.html#ngetchx
(sauf qu’ensuite, comme ton tableau est un tableau de char j’imagine, tu vas devoir caster key en char)
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. »

90

Sasume (./89) :
(sauf qu'ensuite, comme ton tableau est un tableau de char j'imagine, tu vas devoir caster key en char)


Et c'est justement sur ça que je m'interroge grin