C/C++ [Résolu][C] Comparaison

Sparkdaemon

Staff
Membre du personnel
Inscrit
7 Avril 2009
Messages
556
Reactions
3
#1
Bonjour à tous !

étant encore un débutant en C, j'ai besoin de vôtre aide afin de faire une condition.

Non, je ne suis pas naze au point de ne pas réussir les conditions, mais, assez pour ne pas comprendre pourquoi celle-ci ne fonctionne pas.

Les packets d'IRC se découpent de la sorte:
Code:
[SERVER][ID][Data][Optionnal data][..]
sauf exception du PING qui se reçoit sans la donnée "SERVER".

Je reçoit les premiers packets provenant du serveur:
Code:
:online-dc3.fr.eu.evolu.net NOTICE AUTH :*** Looking up your hostname...
et le traite afin de l'identifier clairement.
Code:
Packet received.
Serv:[:online-dc3.fr.eu.evolu.net]
PacketID:[NOTICE]
Data1:[AUTH]
Data2l:[:*** Looking up your hostname...]
Ma condition me semble pourtant correcte:
Code:
if (packetID == "NOTICE")
Pourtant ça ne fonctionne pas du tout, le programme se contentant de recevoir les packets sans se préoccuper des conditions..

Help please :B
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#2
Re: [C] Comparaison

En C tu ne peux pas comparer deux chaines de caractères comme en C++ ou autre langage objet/avancé.
Si tu veux comparer deux chaines de caractères entre elles il te faut utiliser la fonction système strcmp (ou strncmp pour comparer n char) qui te renvoi 0 si les deux chaines sont identiques.

Cordialement,
Kangogoo.
 

Labo

Membre Actif
Inscrit
16 Aout 2013
Messages
799
Reactions
15
#3
Re: [C] Comparaison

Tiens, ça me rappelle moi quand j'essaye de tester l'égalité de deux listes en TI-Basic :p
 
A

Anonymous

Invité
#5
C est extrêmement bas niveau, on ne peut pas prétendre en faire sans comprendre les mécanismes sous-jacents, en particulier ici les tableaux.

Ta condition ne fonctionnait pas car tu essayais de comparer deux tableaux, or un tableau en C c'est le pointeur vers le premier élement de celui-ci : T == &T[0] ( et donc T+1 == &T[1] etc ... ça parait bizarre mais c'est de l'arithmétique des pointeurs, rien à voir avec les calculs sur les entiers/réels ), donc tu comparais en réalité deux pointeurs. Cela n'a rien à voir avec la comparaison entre les deux chaines.
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#6
Tu a raison Munrek, mais cela n'empêche que si il veut comparer deux chaînes de caractères il doit quand même utiliser strcmp, cest la seul solution.
 
A

Anonymous

Invité
#7
kangogoo a dit:
Tu a raison Munrek, mais cela n'empêche que si il veut comparer deux chaînes de caractères il doit quand même utiliser strcmp, cest la seul solution.
est-ce que j'ai dit le contraire o_O ?
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#8
y'a aussi la methode "je me fais chier pour rien" , comparer les valeurs des 2 tableaux
 

Sparkdaemon

Staff
Membre du personnel
Inscrit
7 Avril 2009
Messages
556
Reactions
3
#9
J'avais oublié cette histoire de pointeurs sur première case du tableau. Je garde encore mes habitudes d'AutoIt ^^"
 
Haut Bas