Originally Posted by
enjoy
my code is correct but i have debug error !
please help to resolve this problem ...
Your code is not correct at all. Here is a quick fix (C90). It is still full of undefined behaviours.
The macros are ugly...
Code:
#include <stdio.h>
#include <stdlib.h>
#define ns printf("\n\n");
#define tg printf("\t\t\t");
int charint (char c)
{
int ret = 1;
switch (c)
{
case '0':
ret = 0;
break;
case '1':
ret = 1;
break;
case '2':
ret = 2;
break;
case '3':
ret = 3;
break;
case '4':
ret = 4;
break;
case '5':
ret = 5;
break;
case '6':
ret = 6;
break;
case '7':
ret = 7;
break;
case '8':
ret = 8;
break;
case '9':
ret = 9;
break;
default:
ret = -1;
}
return (ret);
}
/******* declaration d'un type de structure d'un seule boisson */
typedef struct nomb
{
int quantite; /* q */
int datefin[3]; /* f */
int prix; /* x */
int prix_achat; /* a */
char nom[20]; /* * */
}
nomb;
/******* fin declaration un boisson ************************************/
void afficher_boisson (int p, nomb * boif)
{
int i;
system ("cls");
for (i = 0; i < 80; i++)
{
printf ("_");
}
tg
printf ("\01 nom : %s", (boif + p)->nom);
ns
tg
printf ("\01 prix : %i", (boif + p)->prix);
ns
tg
printf ("\01 prix achat : %i", (boif + p)->prix_achat);
ns
tg
printf ("\01 Quantite : %i", (boif + p)->quantite);
ns
tg
printf ("\01 Date Fin : %i/%i/%i\n", (boif + p)->datefin[0], (boif + p)->datefin[1], (boif + p)->datefin[2]);
for (i = 0; i < 80; i++)
{
printf ("_");
}
}
/***************************************** Saisie prix ***********************************/
void saisieprix (int pos, nomb * boim)
{
printf ("\01 Donnez nouveaux prix :\n");
fflush (stdin);
scanf ("%i", &((boim + pos)->prix));
}
/************************************************** *****************************************/
/************************************* Saisie prix achat ************************************/
void saisieprixach (int pos, nomb * boim)
{
printf ("\01 Donnez nouveau prix d'achat :\n");
fflush (stdin);
scanf ("%i", &((boim + pos)->prix_achat));
}
/************************************************** *****************************************/
/********************************* Saisie Quantite **************************************/
void saisiequantite (int pos, nomb * boim)
{
printf ("\01 donnez nouvelle Quantite :");
fflush (stdin);
scanf ("%i", &((boim + pos)->quantite));
}
/************************************************** *****************************************/
/*********************************** Saisie Nom ************************************/
void saisienom (int pos, nomb * boim)
{
printf ("\01 Donnez nouveau Nom :");
fflush (stdin);
gets ((boim + pos)->nom);
}
/************************************************** *****************************************/
void saisiedate (int pos, nomb * boim)
{
/*************** prototypes ****************/
int charint (char);
/*******************************************/
int t = 0, p = 0;
int i;
char ch[50];
printf ("\01 Donnez nouvelle date (jj\\mm\\aa) :");
fflush (stdin);
gets (ch);
for (i = 0;; i++)
{
if (charint (ch[i]) >= 0)
{
t = (t * 10) + charint (ch[i]);
}
if (charint (ch[i]) < 0)
{
(boim + pos)->datefin[p] = t;
t = 0;
p++;
}
if (ch[i] == NULL)
break;
}
}
/************************************************** *****************************************/
void ajoutstock (nomb * boij, int *nbst)
{
boij = (nomb *) realloc (boij, sizeof (nomb));
*nbst++;
saisieprix (*nbst, boij);
saisieprixach (*nbst, boij);
saisiequantite (*nbst, boij);
saisienom (*nbst, boij);
saisiedate (*nbst, boij);
}
int main (void)
{
nomb *bois;
int nb_boissons = 0;
ajoutstock (bois, &nb_boissons);
afficher_boisson (nb_boissons, bois);
return 0;
}
Note also that you can find French speaking C-experts at 'http://www.developpez.com'