Accueil > Forum > > > > structure en c
structure en c
mercredi 1 juin 2011 à 22:33:26 |
structure en c

vercd7am
|
Bonjour,
j'aurais voulu m'enleve un doute sur les structures en c.
Disons que je definis une structure
Code C/C++ : struct bidule
{
int bibi;
char bobo [200];
};
puis un pointeur sur ma structure
Code C/C++ :
lorsque je fais appel a chose.bibi, c'est bien un pointeur sur int, non, jusque la pas d'erreur ?
Mais si je veux imprimer la valeur du int qui est a l'adresse pointe par mon chose.bibi, qu'est ce que je dois rentre ? La question peut paraitre conne, mais j'ai ecrit un prog et quand je lui demande de me renvoyer la valeur, j'ai l'impression qu'il me renvoie une adresse (et c'est pas qu'une impression. Je tiens a preciser que je ne mets pas &chose.bibi). C'est pour ca que j'en suis venu a me demander quel est le type de chose.bibi par exemple.
merci d'avance
|
|
jeudi 2 juin 2011 à 00:50:21 |
Re : structure en c

CptPingu
|
Soit la structure "bidule", alors pour accéder à la valeur contenu dans "bibi":
Code C/C++ :
bidule chose1;
=> chose1.bibi;
bidule* chose2;
=> (*chose2).bibi ou chose2->bibi
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
jeudi 2 juin 2011 à 00:51:34 |
Re : structure en c

CptPingu
|
Bien évidemment, on considère que chose2 est alloué: bidule* chose2 = malloc(1 * sizeof (bidule))
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
jeudi 2 juin 2011 à 08:14:04 |
Re : structure en c

vercd7am
|
Merci beaucoup pour la reponse, je vais la tester des que possible. J'avais essaye (*chose.bibi) ou encore (*(chose.bibi)) mais ca n'allait pas.
Par ailleurs, j'aurais voulu savoir si on peut connaitre le nombre de lignes dans un fichier sans le parcourir au prealable deja une fois.
J'aimerais allouer de la place (x fois ma structure) mais x variant, pour l'instant, il m'a semble qu'un malloc suffisament grand avec eventuellement realloc au besoin etait le mieux. Mais si je peux allouer d'entree le bon espace memoire et m'eviter un eventuel realloc, ce serait mieux.
|
|
jeudi 2 juin 2011 à 10:27:50 |
Re : structure en c

vercd7am
|
Malheureusement, j'en suis au meme niveau, ca n'a pas marche.
Voici ce que je fais :
deja une structure
Code C/C++ : struct titre
{
int nombre;
char naz[200];
char nav[200];
};
puis dans mon main
Code C/C++ : struct titre *li;
li = (struct titre *)malloc(1*sizeof(*li));
lectureInt(fichier, li[0].nombre);
lecture(fichier, li[0].naz);
printf("blblb : %d \n %s \n", li[0].nombre, li[0].naz);
ou le lectureInt ressemble a ca
Code C/C++ : #include <stdio.h>
#include "conversionAsciiNombre.h"
void lectureInt(FILE *fichier, int *nom)
{
int l;
*nom=0;
printf("%d\n",(*nom));
while( (l=fgetc(fichier)) != 9 )
{
*nom=((*nom)*10)+conversionAsciiNombre(l);
printf("%d \t", (*nom));
}
}
et le lecture a ca
Code C/C++ : #include <stdio.h>
void lecture(FILE *fichier, char *nom)
{
int l;
int j=0;
while( (l=fgetc(fichier)) != 10 )
{
*(nom+j)=l;
j++;
}
*(nom+j)=0;
}
Le fichier contient un nombre, un tab puis plusieurs noms a la suite separes par des espaces.
Je recupere bien ce que je veux dans mon lecture et a priori aussi dans lectureInt (j'ai mis un print dans cette fonction pour controler et ca renvoie bien ce que je veux).
Je dois a priori me tromper au niveau du type des elements de ma structure, mais je n'arrive pas a trouver ce qui ne va pas et pourquoi il renvoie ce que je veux avec les char et pas avec mon int (je recupere ce que je veux mais je n'affiche pas ce que je veux, et ca m'embete).
|
|
jeudi 2 juin 2011 à 15:31:44 |
Re : structure en c

coucou747
|
Réponse acceptée !
Bonjour,
quand tu écris :
lectureInt(fichier, li[0].nombre);
et bien li[0].nombre est un int, pas un int*
tu dois faire :
lectureInt(fichier, & ( li[0].nombre) );
|
|
vendredi 3 juin 2011 à 16:22:20 |
Re : structure en c

vercd7am
|
Merci pour cette reponse, effectivement ca marche.
Mais je dois dire que la j'ai du mal a comprendre et d'ailleurs a la compilation, il me renvoie un warning (maintenant j'ai un warning et il renvoie ce que je veux, avant pas de warning mais pas ce que je veux).
Dans ma fonction je demande un pointeur sur un File et un pointeur sur un int. Or avec cette reponse, je lui renvoie l'adresse de mon int.
Ma fonction lecture fonctionne correctement et je n'ai pas de warning. En revanche, si je remplace par &(li[0].naz), ca marche encore mais avec un gros warning. Pourquoi ????????????
Code C/C++ : #include <stdio.h>
void lecture(FILE *fichier, char *nom)
{
int l;
int j=0;
while( (l=fgetc(fichier)) != 10 )
{
*(nom+j)=l;
j++;
}
*(nom+j)=0;
}
|
|
vendredi 3 juin 2011 à 16:29:15 |
Re : structure en c
|
vendredi 3 juin 2011 à 16:29:57 |
Re : structure en c

CptPingu
|
int nombre; => entier
char naz[200]; => pointeur (équivaut à char* naz en terme de type)
nombre => int
&nombre => int*
&&nombre => int**
naz => char*
&naz => char**
&&naz => char***
li[0].nombre => int
&li[0].nombre => int*
&&li[0].nombre => int**
li[0].naz => char*
&li[0].naz => char**
&&li[0].naz => char***
Donc:
lectureInt(fichier, &li[0].nombre);
lecture(fichier, li[0].naz);
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
vendredi 3 juin 2011 à 17:18:03 |
Re : structure en c

vercd7am
|
Le warning c'est ca :
passing argument 2 of 'lectureInt' makes integer from pointer without a cast
dans mon lectureInt.h : expected 'int' but argument is of type 'int *'
Maintenant, je remercie capitaine pingu pour le resume au passage, de ce que je sais, l'operateur & applique a une variable delivre l'adresse de celle-ci.
Est-ce que lorsque l'on fait &variable, pour la machine ca revient a lui declarer implicitement un pointeur vers 'type de ma variable' qui repere cette variable, du genre :
Code C/C++ :
En gros ce que je comprends par "donne moi l'adresse de i", c'est plutot "donne moi la valeur de mon pointeur p qui pointe sur ma variable i".
|
|
Cette discussion est classée dans : code, int, chose, structure, bibi
Répondre à ce message
Sujets en rapport avec ce message
Aide pour mega debutant [ par C++ ]
Salut, bon alors je vien d ouvrir c++ mais comment mettre un code sur un boutton ???par exemple ce code comment je doits le mettre sur un bouton :int
tableau dynamique de structure en C ? [ par axl79 ]
salutje voudrai faire un tableau dynamique de structures. voici ma structure: struct struct_arete { int sommet1; int sommet2; int quantite;} arete;com
Difference [ par xionoxid ]
C'est koi la difference entre time (0) et time (NULL) les 2 font des nbr aleatoire !??#include #include #i
Probleme avec le "linker" [ par Darkneon ]
Salut,J'ai 3 fichiers comme ceciTest.cpp#include "test.h"#include void PrintA(int num){ for(int i=0; i<num; i++
passer d'un widget a une autre structure [ par khaledtaib ]
bonjourj' ai un petit programme de traitement d'image en language C, que je veux lui creer une interface graphique en GTK+.ce programme doit afficher
Tableau de structure [ par tomsawyerbelgique ]
Bonjour suriez-vous me dire comment fait-on pour passer un tableau de structure dans une fonction:struct student { char nom[10]; int nbcot
besoin d'aide [ par ekinoks ]
voila g trouver un code c++ pour decrypté un fichier mais je m'y conné pas dutout en c++ kunkun pouré m'aidéle code est :void p(FILE* fp, int seed) {
Cacher le curseur [ par BsEtZeOpLhD ]
Salut.J'essay de cacher le curseur sous win Xp.J'ai fait le code suivant :#include int WINAPI WinMain(HINSTANCE hinstExe, HINSTANC
exception et AfsMessageBox [ par poseidon2 ]
Voic mon code: void *ImageLink::imageRecvThread(void *pParam){ ImageLink *iLink = (ImageLink*)pParam; int nIndex = 0; int nSizeRecv = 0; unsigned in
Pointeur [ par casafa ]
Bonjour tlm,Je suis débutant et je comprend à quoi sert les pointeurs...Quel est la différence entre ces 2 exemples, qu'est ce que le premier à en plu
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|