Structure

Signaler
Messages postés
90
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
6 mars 2007
-
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
-
bonjoir, enfaite voila j'aimerai pouvoir exploiter une structure
mais voila j'i arrive pas.

struct connect_nick { //ma structure
char pseudo[1000];
char identd[1000];
char ip[1000];
char serv[1000];

};

void lignenick(char *buffer, int sock, char *mot, char *mot2, char *mot3, char *mot4, char *mot5, char *mot6)
{
struct connect_nick *n;
n->pseudo = *mot;
printf("%s",n->pseudo);
}

hé la op j'ai un bug

Alors pouvez vous me donner une facon d'utiliser les structures?

11 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
struct connect_nick *n;
POINTEUR QUI POINTE OU ???

ciao...
BruNews, MVP VC++
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
et aussi:
connect_nick.pseudo est un tableau, impossible de lui changer son adresse.

Plonge toi dans un bouquin de C.

ciao...
BruNews, MVP VC++
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
10
void lignenick(char *buffer, int sock, char *mot, char *mot2, char *mot3, char *mot4, char *mot5, char *mot6)
{
struct connect_nick *n;
n->pseudo = *mot;
printf("%s",n->pseudo);
}

Tu utilise un pointeur (struct connect_nick *n) qui pointe sur rien --> Plantage assuré avec une erreur d'access violation.

Tu dit qu'un tableau de caractère est égal à la valeur adressée par ta variable mot, soit le premier caractère de mot. Il faudrait faire :
strcpy(n->pseudo, mot);

Pour le reste, c'est bon, mais pour optimisation, tu pourrait remplacer tes char* par des const char* (passage de l'adresse uniquement, donc plus rapide), vu que tu ne les modifie pas dans ta fonction.
Messages postés
90
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
6 mars 2007

Pouvez vous me faire un exemple de structures ?
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
10
struct connect_nick *n;

--> remplace ça par :

struct connect_nick *n = new struct connect_nick;

Et à la fin de ta fonction met :
delete connect_nick;
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Salut. Si tu alloue la mémoire, tu ne pourra plus faire ceci. (Corrigez moi si je me trompe, je suis un peu fatigué ce matin (matin pour moi bien sûr)):

n->pseudo = *mot;
printf("%s",n->pseudo);

Il faudra faire ceci:

n[0]->pseudo = *mot;
printf("%s",n[0]->pseudo);

par exemple.
Aussi:
n[0]->pseudo = *mot;
Pourquoi *mot. pseudo est bien une chaine de caractère.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
252
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
5 septembre 2006
1
n[0]->pseudo = *mot;

n n'est pas un tableau de structures.

struct connect_nick n;
strcpy( n.pseudo, mot );
printf("%s", n.pseudo );
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
strcpy( n[0].pseudo, mot );
Évidament, c'est si il alloue de la mémoire pour plusieur structure sinon, c'est comme tu dit.
Ou encore il peu modifier ses membre de structure pour qu'il ne soit plus des tableaux mais des pointeurs.
Il pourrais faire ainsi:
n.pseudo = mot
___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
90
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
6 mars 2007

merci la sa marche nickel mais, c pas le pointeur qui faut delete?
delete connect_nick; <= ça c le nom de la structure....
Messages postés
90
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
6 mars 2007

Parcontre, j'ai une question parce que je pige pas pk on a besoin parfois d'utiliser scalloc malloc etc parce que on a des tableau qui nous allous de la mémoire. ???
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
10
Euh oui je me suis trompé dans mon delete... Il fallait bien sur comprendre

delete n;