Erreur bizzare

lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013 - 3 déc. 2007 à 01:11
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 3 déc. 2007 à 08:42
Bonjour, je code un programe en C sous Visual Studio.
La chose qui est tres surprenante c est que quand je lance mon programe a partir de windows, il plante tand dis que si je le lance a partir de Visual (en cliquant sur 'Debug'), mon programme ne plante pas,
Aucune erreur de compilation.
Quand je lance sur windows, sa m affiche l erreur: Envoyer, Ne pas envoyer.
J'ai cherche, et j'ai trouve l endroit de l'erreur (je l'ai trouve en mettan en commentaire bloc par bloc de code et je regardait si sa plantait ou pas)

Je vous met les parties du code qui sont utlisee:

Les variables globales:

char in_buffer[128];
llist l_user;

avec

typedef struct user user;
struct user
{

    int index;
    int t_index;
    BOOL connected;
    LPCTSTR ip;
    BOOL p_protected;
    LPCTSTR u_name;
    struct user *next;

};

 typedef user* llist;

et les deux fontions mises en jeu:

void split_on_ur_users(char* cache,int clas,int len)
{
      int i,j,k;
      int totals,new_len;
      char* rest;
      char** temp;
      char* copy1;
      char* copy2;
      totals=0;
      temp=NULL;
      for(i=0;i<len;i++)
      {
            if(cache[i]==SEP)
            {
                cache[i]=0;
                rest=&cache[i+1];
                break;
            }
      }
      totals=atoi(cache);
      if(totals!=0)
      {
            temp=(char**)malloc(totals);
            if(!temp)
            {
                ..
            }
            new_len=len-strlen(cache);
            j=0;
            k=0;
            temp[0]=rest;
            for(i=0;i<new_len;i++)
            {
                if(rest[i]==SEP)
                {
                        if(j==1)
                        {
                            k++;
                            rest[i]=0;
                            temp[k]=&rest[i+1];
                            j=0;
                        }
                        else
                        {
                            j++;
                        }
                }
            }for(i=0;i<totals;i++)
            {
                copy1=NULL;
                copy2=NULL;
                copy1=temp[i];
                k=0;
                for(j=0;j<new_len;j++)
                {
                    if(temp[i][j]==SEP)
                    {
                        copy2=&temp[i][j+1];
                        temp[i][j]=0;
                        break;
                    }
                }
                if(l_user==NULL)
                {
                            l_user=add_user(NULL,atoi(copy1),0,copy2,"",FALSE,TRUE);
                }
                else
                {
                            l_user=add_user(l_user,atoi(copy1),0,copy2,"",FALSE,TRUE);
                }
               
            }
      }
     
}

et

llist add_user(llist linked_user,int indx,int t_indx,char* ipad,char* nam,BOOL prtcd,BOOL cnntd)
{
    user* new_user=malloc(sizeof(user));
    if(!new_user)
    {
       ...
    }
    (*new_user).index=indx;
    (*new_user).t_index=t_indx;
    (*new_user).connected=cnntd;
    (*new_user).ip=ipad;
    (*new_user).p_protected=prtcd;
    (*new_user).u_name=nam;
    (*new_user).next=linked_user;
    return new_user;
}

Mon programme alors plante quand j appele:

split_off_r_users(&in_buffer[1],0,strlen(in_buffer));

Merci d'avance

l3KTr0 Was HeRe

1 réponse

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 déc. 2007 à 08:42
LPCTSTR u_name;
pourquoi un pointeur au lieu d'un buffer ?

ciao...
BruNews, MVP VC++
0
Rejoignez-nous