Bonjour,

Je débute en C, pouvez vous m'aider à résoudre ce problème svp :

(gdb) BT
#0 vsprintf_irc (str=0x64c525 "#!Accueil!\r\n", format=0x438b6d "", vl=0x7fff48d252a0) at sprintf_irc.c:291
#1 0x00000000004332c7 in vsendto_prefix_one (to=0x65cfe0, from=<value optimized out>, pattern=0x438b62 ":%s PART %s", vl=0x7fff48d252a0) at send.c:324
#2 0x0000000000433979 in sendto_channel_butserv (chptr=<value optimized out>, from=0x65ed40, pattern=0x438b62 ":%s PART %s") at send.c:571
#3 0x000000000040be52 in m_part (cptr=0x65ed40, sptr=<value optimized out>, parc=<value optimized out>, parv=0x568de0) at channel.c:3547
#4 0x00000000004171c6 in dopacket (cptr=0x65ed40, buffer=<value optimized out>, length=0) at packet.c:104
#5 0x000000000041f1d3 in read_message (delay=<value optimized out>) at s_bsd.c:1563
#6 0x000000000041062d in main (argc=1219822525, argv=<value optimized out>) at ircd.c:979
En erreur j'ai :

Program terminated with signal 11, Segmentation fault.
#0 vsprintf_irc (str=0x64c525 "#!Accueil!\r\n", format=0x438b6d "", vl=0x7fff48d252a0) at sprintf_irc.c:291 (NB : ligne f ((*str = *p1)))
Voila la fonction vsprintf_irc :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
char *vsprintf_irc(register char *str, register const char *format, register va_list vl)
{
   register char c;
 
   while ((c = *format++))
   {
         if (c == '%')
         {
            c = *format++; /* May never be '\0' ! */
 
            if (c == 'c')
            {
               *str++ = (char)va_arg(vl, int);
               continue;
            }
            if (c == 's')
            {
               register const char *p1 = va_arg(vl, const char *);
               if ((*str = *p1))   // ligne 291
                  while ((*++str = *++p1));
               continue;
            }
Merci pour votre aide

Cdt,
MC