Voilou je m'explique, je suis en train de coder un bot IRC mais j'ai un ptit probleme. J'ai cree ma propre fonction gettok (d'ou vient surement le probleme).
J'explique tout d'abbord la premiere partie du programme (que je ne vais pas copier coller car trop long :p) donc c'est pour l'instant un socket simple se connectant a IRC (Quakenet pour etre precis) avec comme partie interessante :
char buffer[1000];
memset(buffer,0,sizeof(buffer));
char buffer2[1000];
memset(buffer,0,sizeof(buffer));
while (loop == '1')
{
while ((*buffer != '\n'))
{
recv(IrcSock,buffer,1,0);
strcat(buffer2,buffer);
}
printf("%s",buffer2);
IrcCheck(buffer2);
strcpy(buffer,"");
strcpy(buffer2,"");
}
Jusque la pas de probleme. Le probleme vient ensuite :
int IrcCheck(char temp[])
{
if ( strstr(temp,"PING") && !strstr(temp,"V") )
{
temp[1] = 'O';
send(IrcSock,temp,strlen(temp),0);
return 0;
}
if ( IrcOk == '0' )
{
if ( strstr(temp,"AUTH") )
{
char *temps = new char [200];
sprintf(temps,"USER Tbot Tbot Tbot :by Tidam\n");
send(IrcSock,temps,strlen(temps),0);
sprintf(temps,"NICK TbotPick\n");
send(IrcSock,temps,strlen(temps),0);
return 0;
}
if ( strcmp(gettok(temp,2," "),"376") == 0 )
{
char *temps = new char [200];
sprintf(temps,"JOIN #Tid@m\n");
send(IrcSock,temps,strlen(temps),0);
IrcOk = '1';
return 0;
}
}
else
{
if ( strcmp(gettok(temp,4," "),IrcChan) == 0 )
{
printf("\n! ! ! test ! ! !\n\n");
if ( strcmp(gettok(temp,2,":"),"salut") == 0 )
{
char *temps = new char [200];
sprintf(temps,"PRIVMSG %s :Salut !\n",IrcChan);
send(IrcSock,temps,strlen(temps),0);
}
return 0;
}
}
}
Tout marche jusqu'a IrcOk='1'; c'est a dire jusqu'a ce qu'il cherche la partie if ( strcmp(gettok(temp,4," "),IrcChan) == 0 ) car le programme plante avant le printf("\n! ! ! test ! ! !\n\n");
La fonction gettok que j'ai faite est la suivante :
char *gettok(char *temp,int num,char *tok)
{
char *token;
token = strtok(temp,tok);
for (int i = 1;i < num;i++)
{
token = strtok(NULL,tok);
}
return token;
}
Elle est bien declaree et marche normalement. Mon probleme est surtout pourquoi if ( strcmp(gettok(temp,2," "),"376") == 0 ) marche et pas if ( strcmp(gettok(temp,4," "),IrcChan) == 0 ). Si vous voyez j'en serais ravis :p
PS: En ce qui concerne les variables, elles sont toutes bien declarees et IrcChan est du type char *
Marci d'avance !