begin process at 2012 05 30 12:05:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

Autre

 > 

Struct dynamique est ce possible ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Struct dynamique est ce possible ?

mardi 3 juillet 2007 à 20:16:08 | Struct dynamique est ce possible ?

Booster

Membre Club
Bonjour à tous,

Voici ce que je veu faire :

struct test{
    int var1;
    char * tab;
}


//Dans mon code
test mastruct;
mastruct.tab = new char * [100]; // Sachant que biensure sa peu etre 100 comme 1000 ...

Ceci ne marche pas quand je passe en paramétre ma structure dans un recv() le recv retourne -1 :( par contre si je marque comme ceci:

struct test{
    int var1;
    char tab[100];
}

La le recv() marche mais ce n'est plus dynamique.

Quelqu'un à une idée pour rentre le tableau qui est dans ma structure dynamique ?
Merci d'avance
mardi 3 juillet 2007 à 20:38:43 | Re : Struct dynamique est ce possible ?

BruNews

Administrateur CodeS-SourceS
mastruct.tab = new char[100];

ciao...
BruNews, MVP VC++
mardi 3 juillet 2007 à 20:40:18 | Re : Struct dynamique est ce possible ?

Booster

Membre Club
Escuse erreur de ma part j'ai voulu marquer
mastruct.tab = new char[100]; et non
mastruct.tab = new * char[100]; qui est totalement faux...
Donc ceci ne fonctionne pas ^^
Merci pour ta réponse
mardi 3 juillet 2007 à 23:10:38 | Re : Struct dynamique est ce possible ?

Booster

Membre Club
Personne n'a d'autre idée ? :(
mardi 3 juillet 2007 à 23:33:17 | Re : Struct dynamique est ce possible ?

BruNews

Administrateur CodeS-SourceS
faut voir ce que tu en fais de ta structure mais sinon c'est bon au niveau allocation.

ciao...
BruNews, MVP VC++
mercredi 4 juillet 2007 à 17:28:13 | Re : Struct dynamique est ce possible ?

Booster

Membre Club

Salut,

Ben comme je l'est dit c'est pour mettre dans un recv() de socket...

j'ai essayer avec malloc mais meme probleme lors de la reception d'un message recv retourne -1 car en réalité il n'a pu ecrire dans le buffer que je lui est passé :(

Tu n'aurais pas une idée ? ruse ou autre ^^

jeudi 5 juillet 2007 à 09:41:16 | Re : Struct dynamique est ce possible ?

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

(Ce que je vais dire est soumis à caution, et est basé plus sur le Delphi que sur le C)

Quand tu déclare ça :

struct test{
    int var1;
    char * tab;
}

Ca fait quelle taille ? A priori 8 octets : les 4 de l'int plus les 4 du pointeur. Tu peux vérifier avec sizeof.

Maintenant si tu fait un mastruct.tab = new char[100];
Tu alloue 100 octets (En MBC, en unicode, ça fait peut être le double).

Si tu refait un sizeof, tu tomberas pourtant toujours sur 8. Les 100 octets ont été alloués quelque part dans le tas et sont pointés par les 4 derniers octets de ta structure.

Si tu fait :
macopiedestruct = mastruct;

Cela fait une copie de 8 octet... macopiedestruct .tab pointe alors sur le MEME tableau que mastruct.tab.
Donc toute modification appliquées à macopiedestruct .tab sera répercutée sur mastruct.tab.

Partant de cette état de fait, lors de ta transmission de ta structure à ta socket, il faut que tu fasse un peu de code pour gérer le passage correctement. Il faut que tu commence par passer les 4 octets de var1, puis les 100 octets de tab. A la réception, il faut que tu copie le var1 qui arrive dans le var1 d'une structure, et que tu récupère les 100 octets dans un tableau, et que tu fasse pointer le pointeur de ta structure sur ce tableau.

jeudi 5 juillet 2007 à 17:51:41 | Re : Struct dynamique est ce possible ?

Booster

Membre Club
Salut,

Je te remercie de ta réponse, se que tu à dit au début je le savais puisque effectivement j'avais fait un sizeof pour voir la taille ^^ et effectivement tu à raison ça fait 8 octets.

Bon bah vu qu'apriori on ne peu faire de stucture dynamique ^^ je vais essayé de passer par un autre moyen c'est dommage quand même.


Cette discussion est classée dans : dynamique, tab, char, struct, recv


Répondre à ce message

Sujets en rapport avec ce message

Lecture/Ecriture/Modification d'une structure dans un fichier [ par paniX ] Bonjour. Alors voici mon probleme:j'ai créé une structure client qui a cette forme :struct client{ int id; char nom[30]; char prenom[30]; char adresse lire dans un fichier [ par skeul ] Bonjour,je rencontre qqs difficultés a faire une fonction qui lit un fichier et qui rentre la chaine de caractere dans un tableauy a comme un probleme struct [ par ready4 ] Je ne sais pas comment initialiser mes moteurs //intialisation moteursM1 = {2, 1, 1, 2, 0, 0, 120};M2 = {8, 4, 4, 8, 0, 0, 80};M3 = {32, 16, 16, 32, 0 Allocation dynamique [ par payen ] Salut a tous,J'ai juste besoin d'une petite confirmation: je souhaite creer de facon dynamique un tableau a NBL lignes NBC colonnes. Lequel des 2 code fonction d'alloaction dynamique [ par tomsawyerbelgique ] Pour une allocation dynamique d'un tableau à deux dimensions. Comme celle ci:cout // Initalisation int** tab = new int*[p_size1_tab]; for(in envoi d'une structure dans un socket [ par Taum ] Bonjour, voilà j'ai besoin d'envoyer une structure dans un paquet udp :typedef struct { unsigned short TransactionId; short Flags; short Questions; sh Espace mémoire occupé par une structure [ par HCJarod ] Salut,j'ai un vague souvenir concernant les structures en C (struct) qui n'occupe pas la même place mémoire en fonction du sens de la déclaration. Ca tableau char [ par dingue007 ] Voila je dois faire un prog en C++ : un tableau avec les mois de lannée et quand je tape un chiffre il me sort le mois ! mais je narrive pas a faire l char tab[]=a; [ par zelze ] Voila mon probleme:je connais char tab[]="ton texte"; mais se que je veux faire c'est a la place de "ton texte" mettre une variable.j'ai essaié plusie recv() et du brol [ par epoc ] hum... encore moi!g un petit prob avec la fonction recv() ou send(), je c pas trop.dans mon client j'ai ça :char *buffer = new char[1024];buffer="NEW


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,246 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales