1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
enum todo
{ add = 'a', remov = 'r', move = 'm', end = 'e' };
char days[7][10] =
{ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday",
"sunday" };
char months[12][12] =
{ "january", "february", "march", "april", "mai", "june", "july", "august",
"september", "october", "november", "december" };
struct date
{
char d[10], m[11];
unsigned y;
};
struct client
{
int num;
char name[50], street[60];
struct date limit;
struct client *prev, *next;
};
void angabe (struct client *var)
{
printf ("type a name please :");
fgets (var->name, sizeof (var->name), stdin);
printf ("type the address of the client :\n ");
fgets (var->street, sizeof (var->street), stdin);
printf ("give the delay for his/her payment :\nday :");
fgets (var->limit.d, sizeof (var->limit.d), stdin);
putchar (';');
printf (" month : ");
fgets (var->limit.m, sizeof (var->limit.m), stdin);
putchar (';');
printf (" year : ");
/* -ed-
fgets(var->limit.y,sizeof(var->limit.y),stdin);
Absurdite. fgets() sert a saisir une ligne, pas un nombre...
Ilfaut faire en 2 fois
- saisie d'une ligne de texte
- conversion en valeur nulmerique (supposons saisi en decimal)
*/
{
char s[8];
fgets (s, sizeof s, stdin);
var->limit.y = strtol (s, NULL, 10);
}
printf (";\n");
}
int main (void)
{
char test;
struct client *first, *last, *var1, *var2;
first = malloc (sizeof (struct client));
first->num = 0;
do
{
printf ("nb: a=add/r=remove/m=move/e=end\n");
printf ("what do you want to do? : ");
/* -ed-
test=getchar();
mauvais choix. La aussi, il faut utiliser fgets(). */
{
char s[4];
fgets (s, sizeof s, stdin);
test = s[0];
}
switch (test)
{
case 'a':
{
if (first->num == 0)
{
last = first;
var1 = first;
first->num++;
};
var2 = var1;
var1 = malloc (sizeof (struct client));
last = var1;
last->prev = var2;
var2->next = last;
last->num = last->prev->num + 1;
angabe (var1);
printf ("numero actuel=%d\n", var1->num);
};
break;
default:
break;
};
}
while (test != 'e');
return 0;
} |
Partager