Accueil > > > PARSER IRC 2
PARSER IRC 2
Information sur la source
Description
salut a tous.ce code permet de determiner les elements d'un message irc et de les ecrires dans une structure.bien pratique pour' l'ecriture d'un bot.tester sur mon bot ca marche nickel.(p3 400 mhz).
Source
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- typedef struct IRCLINE
- {
- char sender[64]; // :jack!busta@aol-C490E8E0 ou :irc.aol.com
- char action[8]; // PRIVMSG JOIN PART etc....
- char message[512]; // : salut mon gars
- char channel[32]; // #chanell
- char nick[32]; // bustabot
- char numeric[4]; // 401 succeful joined
- char mode[16]; // +MmuCcRitpv
- }IRCLINE;
-
- int IsUpperCase(char chaine[]){
- int i=0;
- while(chaine[i]!= '\0'){
- if(chaine[i] < 'A' || chaine[i] > 'Z') return 0;
- i++;
- }
- return 1;
- }
-
- int IsNumeric(const char number[]){
- int i=0;
- while(number[i]!='\0'){
- if(number[i] < '0' || number[i] > '9') return 0;
- i++;
- }
- return i == 3 ?1 : 0;
- }
-
- int parseline(const char ircline[BUFSIZ],char tab[][512]){
-
- int nb_mot=1,i=0,j=0;
- char *pointeur,*buffer;
-
- buffer = strdup(ircline);
- pointeur = strtok( buffer, " " );
- strcpy(tab[0],pointeur);
-
- while( pointeur != NULL ) {
-
- pointeur = strtok( NULL, " " );
- if ( pointeur != NULL ) {
- nb_mot++;
- strcpy(tab[nb_mot-1],pointeur);
- }
-
- }
- /*********** on 'recolle' la partie message ******************/
- for(i=1;i<(nb_mot+1);i++){
- if(tab[i][0]==':'){
- for(j=1;j<(nb_mot-i);j++){
- strcat(tab[i]," ");
- strcat(tab[i],tab[i+j]);
- strcpy(tab[i+j],"\0");
- }
- }
- }
-
- return nb_mot-(j-1);
- }
-
- void GetIrcParam(const char imgline[],IRCLINE* irc){
-
- int nb_mot=0,i=0,j=0;
- char tab[10][512];
- memset(&tab, 0, sizeof(tab));
- nb_mot=parseline(imgline,tab);
- if(nb_mot==2){
- strcpy(irc->action,tab[0]);
- strcpy(irc->message,tab[1]+1);
- }
- else {
- strcpy(irc->sender,tab[0]+1);
- for(i=1;i<(nb_mot);i++){
- if(IsUpperCase(tab[i]))strcpy(irc->action,tab[i]);
- //else if(IsNumeric(tab[i]))infoirc.numeric=atoi(tab[i]);
- else if(IsNumeric(tab[i]))strcpy(irc->numeric,tab[i]);
- else if(tab[i][0]=='#')strcpy(irc->channel,tab[i]);
- else if(tab[i][0]==':')strcpy(irc->message,tab[i]+1);
- else if((tab[i][0]==('-'))||(tab[i][0]=='+'))strcpy(irc->mode,tab[i]);
- else {
- if(tab[i][0]!='@')strcpy(irc->nick,tab[i]);
- }
- }
- }
-
-
- }
-
- int main(){
- const char line[]=":jack!busta@aol-C490E8E0 TOPIC #bustabot :salut busta";
- IRCLINE infoirc;
- memset(&infoirc, 0, sizeof(infoirc));
- GetIrcParam(line,&infoirc);
-
- printf("Sender %s\n"
- "Action %s\n"
- "Message %s\n"
- "Channel %s\n"
- "Nick %s\n"
- "Numeric %s\n"
- "Mode %s\n",infoirc.sender,infoirc.action,infoirc.message,infoirc.channel,infoirc.nick,infoirc.numeric,infoirc.mode);
-
-
- getch();
- return 0;
- }
-
-
-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct IRCLINE
{
char sender[64]; // :jack!busta@aol-C490E8E0 ou :irc.aol.com
char action[8]; // PRIVMSG JOIN PART etc....
char message[512]; // : salut mon gars
char channel[32]; // #chanell
char nick[32]; // bustabot
char numeric[4]; // 401 succeful joined
char mode[16]; // +MmuCcRitpv
}IRCLINE;
int IsUpperCase(char chaine[]){
int i=0;
while(chaine[i]!= '\0'){
if(chaine[i] < 'A' || chaine[i] > 'Z') return 0;
i++;
}
return 1;
}
int IsNumeric(const char number[]){
int i=0;
while(number[i]!='\0'){
if(number[i] < '0' || number[i] > '9') return 0;
i++;
}
return i == 3 ?1 : 0;
}
int parseline(const char ircline[BUFSIZ],char tab[][512]){
int nb_mot=1,i=0,j=0;
char *pointeur,*buffer;
buffer = strdup(ircline);
pointeur = strtok( buffer, " " );
strcpy(tab[0],pointeur);
while( pointeur != NULL ) {
pointeur = strtok( NULL, " " );
if ( pointeur != NULL ) {
nb_mot++;
strcpy(tab[nb_mot-1],pointeur);
}
}
/*********** on 'recolle' la partie message ******************/
for(i=1;i<(nb_mot+1);i++){
if(tab[i][0]==':'){
for(j=1;j<(nb_mot-i);j++){
strcat(tab[i]," ");
strcat(tab[i],tab[i+j]);
strcpy(tab[i+j],"\0");
}
}
}
return nb_mot-(j-1);
}
void GetIrcParam(const char imgline[],IRCLINE* irc){
int nb_mot=0,i=0,j=0;
char tab[10][512];
memset(&tab, 0, sizeof(tab));
nb_mot=parseline(imgline,tab);
if(nb_mot==2){
strcpy(irc->action,tab[0]);
strcpy(irc->message,tab[1]+1);
}
else {
strcpy(irc->sender,tab[0]+1);
for(i=1;i<(nb_mot);i++){
if(IsUpperCase(tab[i]))strcpy(irc->action,tab[i]);
//else if(IsNumeric(tab[i]))infoirc.numeric=atoi(tab[i]);
else if(IsNumeric(tab[i]))strcpy(irc->numeric,tab[i]);
else if(tab[i][0]=='#')strcpy(irc->channel,tab[i]);
else if(tab[i][0]==':')strcpy(irc->message,tab[i]+1);
else if((tab[i][0]==('-'))||(tab[i][0]=='+'))strcpy(irc->mode,tab[i]);
else {
if(tab[i][0]!='@')strcpy(irc->nick,tab[i]);
}
}
}
}
int main(){
const char line[]=":jack!busta@aol-C490E8E0 TOPIC #bustabot :salut busta";
IRCLINE infoirc;
memset(&infoirc, 0, sizeof(infoirc));
GetIrcParam(line,&infoirc);
printf("Sender %s\n"
"Action %s\n"
"Message %s\n"
"Channel %s\n"
"Nick %s\n"
"Numeric %s\n"
"Mode %s\n",infoirc.sender,infoirc.action,infoirc.message,infoirc.channel,infoirc.nick,infoirc.numeric,infoirc.mode);
getch();
return 0;
}
Conclusion
il reste quelques modification a faire pour ameliorer le code.je travail toujours dessus.c'est juste un code temporaire.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
client IRC ?? [ par crAzYJoJoo ]
Slt, je cherche le code source d'un client irc pour voir comment ca marcheest ce que qq1 sait ou je peux trouver ca ?merci d'avance ++
bot irc [ par Nano ]
quelqu'un pourait me donner la source d un bot irc simple fait avec visual c++Merci d'avance
parser xml en C [ par jbt36 ]
bonjour à tous,j'ai besoin de realiser un editeur xml en Cpour cela je dois notamment parser le fichier xml pour pouvoir le manipuler,l'affichersous f
Client IRC [ par SAtaN ]
quelqu'un aurait il un tutoriel, des infos, pour m'aider à creer un client IRC ???PS : j'utilise Borland C++a+
IRC server [ par spyirc ]
je cherche des sourec pou un IRC server plz help me :p tns :)
server irc [ par belka ]
je voudrai programmer un serveur irc en c++ est je ne sais pas par ou commencer,svp, si vous avez une adresse d'un site ou un code source pour que je
IRC [ par Melfos ]
Chui un newbie et alors ?salut a tous, je voudrais programmer un bot irc et je voudrai savoir si on peu me passer des liens, des docs ou autre qui exp
surcharge de l'operateur ">>" du cin [ par pounch ]
bon voila mon problemej'aimerai parser une ligne de commande grace au cin et afficher un prompt lorsque j'ai fini de parser. Mais le cin n'a pas de me
C++ Builder: Client irc (a laide!) [ par Psyc0s ]
Bon je suis en train de faire un client irc avec C++ builder Mais le socket ne veux pas envoyer les message au serveur:(La connexion au serveur foncti
Variables comme IRC [ par Tidam ]
Voila je debute le C++ apres avoir fait beaucoup d'IRC(bot pickup automatique #PickupCs (vive la pub ;)))et je voudrais savoir si il existe en c++ un
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Forum
ARBRE BINAIREARBRE BINAIRE par pacotheking
Cliquez pour lire la suite par pacotheking
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|