1

Je veux tester la fin d'un fichier (en particulier la chaîne de caractère de tag). Mais j'ai un petit problème:
je la met dans c puis je teste c:

FILE *f
char c[4]
f=fopen("notes","wb")
fputc(1,f);
fputc(0,f);
fputs("abc",f);
fputc(0,f);
fputc(OTH_TAG,f);
fclose(f);
f=fopen(fname,"rb")
fseek(f,-5,SEEK_END);
fgets(c,4,f);

if(c!="abc")

et en effet c n'est pas égale à "abc" pourtant quand je fait ça:

DrawStr(10,10,c,A_NORMAL);

je voit bien "abc".

Qu'est ce qui se passe?

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

2

Tu dois utiliser la fonction strcmp pour comparer deux chaines !
Ce n'est pas comme en BASIC !

3

pourquoi ceci me donne un résultat positif alors:

"abs"=="abs"
Vive le coding gba.
www.codegba.fr.st

4

bah j'en sais rien mais déjà "abs" c'est un tableau donc je sais pas si on peut bien comparer des tableau en C juste avec == . winkwink
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

5

Je ne sais pas, mais c'est incorrect en C.
Je pense que ça correspond à évaluer si l'adresse des deux chaines est la même.
Et si TIGCC optimise bien, il ne créera qu'une seule chaine qu'il utilisera des 2 côtés de l'opérande '==' donc elles auront la même adresse, c'est pour ça que ça donne 1.
Mais il faudrait demander à Kévin pour être sûr.

6

Oui, c'est ça.
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é

7

ah oué ? si on utilise l'opérateur == avec des tableaux , TIGCC compare les adresses ? tiens je savais pas ça.
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

8

moi je trouve cela plutot logique avec la notation
int *tableau;
=> tableau est une adresse...

9

oué, mais tu peux faire :

char *str = "salut";
ou char str[] = "salut";
et ça revient au même...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

10

squale92 a écrit :
oué, mais tu peux faire :

char *str = "salut";
ou char str[] = "salut"; et ça revient au même...


Euh... j'ai essayé avec TIGCC, ça a marché, mais c'est plutôt déconseillé (j'ai eu un warning) car dans la première déclaration, tu ne spécifies pas que ton pointeur désigne un tableau.

11

c un warning sans gravité !
certes, la deuxième écriture est plus "propres" (ce'est celle que j'utilises toujours)...
mais bon.$

ct pr dire que c la même chose
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

dans la première écriture tu a acces à chaque caractère (carac = x) comment ensuite ???

*(str + x) ???

*str + x ?
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

13

x[str]Pim89>*(str+x) <=> str[x] <=>

14

str[x] équivaut ) *(str+x)
et ce pour n'importe quel type de tableaux
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

15

ok merci, j'hésitais entre les 2. grinwinkwink
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

16

Je profite du topic :

Si je veux mettre une trrrrrrèèèèsss grande chaine, tellement que je peux pas la déclarer avec char str[]="......" sinon ça dépasse des 16Ko, que faut-il écrire pour la malloc-er sans avoir de warnings ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

17

je dira bien quelque chose de ce style :

char * str;

str = malloc(nbr_char * sizeof(char));


...


free(str);
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

18

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

19

embarrassed
avatar
納 豆パワー!
I becamed a natto!!!1!one!

20

de rine?
pas sur que ça marche, mais je ovis pas pkoi ça marcherai pas
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

21

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

22

Ah tant que j suis... J'ai tjrs des problèmes de compréhension ac les pointeurs...

Y a-t-il moyen de connaitre la taille d'une chaine en n'ayant qu'un pointeur ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

23

Tu peux utiliser la fonction strlen.

24

ah oui tiens... j'ai essayé juste après avoir posté, et je pensais pas que ça marchait ac des pointeurs top

pour l'instant tout va bien donc, puisque le but était de regarder la longueur d'une chaine mise en argument, de façon à pouvoir la stocker dans un char qui a préalablement été malloc-é à la bonne taille (au fait justement cette 'bonne taille', c'est la longueur de la chaine +1 ?)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

25

Si tu prends la valeur reçue par strlen et que tu veux y ajouter un caractère nul, OUI.

26

Bah je ne VEUX pas particulièrement y ajouter un caractère nul, mais je crois bien que je n'ai pas le choix... Bon de tte façon on va pas chipoter pour un octet, donc je le met cool
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

27

Tu utilises quoi comme fonction pour stocker la première chaine dans le deuxième ?

28

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

29

je crois que strcpy recopie le caractère nul de la source.
Donc il faut que tu lui alloue l'espace nécessaire...

30

pkoi tu regardes pas ma source ? ya de la comparaison de chaines, de la copie de chaines etc...
avatar
納 豆パワー!
I becamed a natto!!!1!one!