Rechercher : dans
Par :

Probleme en structure

Dernière réponse le 3 avr 2008 à 11:46:54 abdess111, le 2 avr 2008 à 22:42:10 
 Signaler ce message aux modérateurs

Slt tt le monde
je veux faire un tableau de tructure qui contient par exemple 5 case,dans ces structures ya 3 champ
struct date
{
int jour;
char *moi; ---->pour stocker la chaine de caractere(decembre par exemple
int annee;
}
je veux que la date sra par exemple: 12 avril 2008
je sais pas cest ou lerreur si vous pouvez maider svp
__________________________________________________________________________
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct date {
int jour;
char *mois ;
int anne;
};typedef struct date tdate;
main()
{
tdate *toto;
int i;
toto=malloc(5*sizeof(tdate));
toto->mois=malloc(sizeof(char));
for(i=0;i<5;i++)
{
printf("le jour:\t");
scanf("%d",&(toto+i)->jour);
printf("le mois:\t");
gets((toto+i)->mois);
printf("l'annee:\t");
scanf("%d",&(toto+i)->anne);
}
for(i=0;i<5;i++)
printf("%d %s %d\n",(toto+i)->jour,(toto+i)->mois,(toto+i)->anne);
}
___________________________________________________________________________
avec ce code ca marche mais le mois est traité comme un int pas comme chaine

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct date {
int jour;
int moi;
int anne;
};typedef struct date tdate;
main()
{
tdate *toto;
int i;
toto=malloc(5*sizeof(tdate));
for(i=0;i<5;i++)
{
printf("le jour:\t");
scanf("%d",&(toto+i)->jour);
printf("le mois:\t");
scanf("%d",&(toto+i)->moi);
printf("l'annee:\t");
scanf("%d",&(toto+i)->anne);
}
for(i=0;i<5;i++)
printf("%d / %d / %d\n",(toto+i)->jour,(toto+i)->moi,(toto+i)->anne);
}
________________________________________________________________________________
merci d'avance

Configuration: Windows XP
Firefox 2.0.0.11

Meilleures réponses pour « probleme en structure » dans :
Javascript - Les structures conditionnelles Voir Qu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non, ce qui permet notamment de donner de l'interactivité à vos scripts. L'instruction...
Langage C - Les structures conditionnelles Voir Qu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...
Les structures en langage C Voir Différence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...
Structure logique d'un disque dur VoirStructure logique d'un disque dur Introduction Lorsque vous utilisez votre ordinateur, vos données sont organisées sous forme de fichiers et de répertoires, selon une structure arborescente et ces éléments sont stockés sur votre disque dur. C'est...
[Windows XP] Structure de la base de registre VoirQu'est-ce que la base de registre ? Accéder à la base de registre Comprendre son interface Colonne de gauche Les 5 clés racines Colonne de droite Quelques fonctionnalités du registre Exportation (sauvegarde d'une clé du...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
VBScript - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (VBScript associe le mot clé true à...
Structure d'un document XML VoirQu'est-ce que le XML? La norme XML en tant que telle doit être vue comme un outil permettant de définir un langage (on dit alors qu'il s'agit d'un métalangage), permettant de créer des documents structurés à l'aide de balises. Une balise est une...

1

samworld, le 2 avr 2008 à 22:52:14

Bonsoir,

Le champ mois n'est pas initialisé correctement. Tu alloue seulement la taille d'un caractère, cad. 1 octet !
toto->mois=malloc(sizeof(char));
Il faudrait par exemple définir une constante pour allouer un nombre de caractères suffisant pour tout mois :
#define LENGTH_MAX_OF_MONTH 10
toto->mois=malloc(LENGTH_MAX_OF_MONTH);

Sam.

Répondre à samworld

2

abdess111, le 2 avr 2008 à 22:59:54

Merci de mavoir repondre
jai essayer avec celui la
____________________________mais tjr ca marche pas
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct date {
int jour;
char *mois ;
int anne;
};typedef struct date tdate;
main()
{
tdate *toto;
int i;
toto=malloc(5*sizeof(tdate));
toto->mois=malloc(9*sizeof(char));
for(i=0;i<5;i++)
{
printf("le jour:\t");
scanf("%d",&(toto+i)->jour);
printf("le mois:\t");
gets((toto+i)->mois);
printf("l'annee:\t");
scanf("%d",&(toto+i)->anne);
}
for(i=0;i<5;i++)
printf("%d %s %d\n",(toto+i)->jour,(toto+i)->mois,(toto+i)->anne);
}
_________________________________________________________________________
et je crois pas que cest le probleme,jai reserver un tabeau infini pr la chaine mois
et voila jai fais un pti teste avec ce code
_________________________________________
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct date{
char *moi;
};typedef struct date tdate;
main()
{
tdate *toto;
toto=malloc(3*sizeof(tdate));
toto->moi=malloc(sizeof(char));

printf("saisi\t");
gets(toto->moi);


printf("%s\n",toto->moi);
}
___________________________________________
et ca marche!!!!!!!!!!!!!!!!!!!!!

Répondre à abdess111

3

abdess111, le 3 avr 2008 à 01:14:45

Euh jai trouver la 1er erreur cest ke
pour linsstruction toto->mois=malloc(9*sizeof(char)); je reserve la memoire juste pour le pointeur moi qui se trouve dans la premier case
il faus ke a chaque fois le i sincumente(passe a la next case je dois reserver la memoire)
mais bon jai utiliser les tableaux statique cest mieux(rapidite + reserve pas tt la memoire disponible)
voila le code pour les gens qui sinteraissent
_____________________________________________
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct date {
int jour;
char tab[50];
int anne;
};typedef struct date tdate;
int test()
{
int v;
char c;
c=getchar();
printf("voulez vous continuez?(o/n)\t");
scanf("%c",&c);
if(c=='o' || c=='O')
v=1;
else
v=0;
return v;
}
main()
{

tdate *toto;
int i,j;
i=0;
toto=malloc(sizeof(tdate));
do
{
printf("la date %d:\t",i+1);
scanf("%d %s %d",&(toto+i)->jour,&(toto+i)->tab,&(toto+i)->anne);
i++;
}while(test());
for(j=0;j<i;j++)
printf("%d %s %d\n",(toto+j)->jour,(toto+j)->tab,(toto+j)->anne);
}
_________________________________
allez a bientot

Répondre à abdess111

4

samworld, le 3 avr 2008 à 11:41:33

Par curiosité, tu utilises quel compilateur ? et comme environnement de développement ?
Tu connais le C++ ?

A bientôt !

Sam.

Répondre à samworld

5

 abdess111, le 3 avr 2008 à 11:46:54

Moi je travaille avec visual basic studio parce que je travaille aussi le visual basic.le c++ cest pour lannée prochaine :-)
aussi le java et le php cest un long programme qui mattend :-)
allez a bientot

Répondre à abdess111