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
TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|