-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtp3Saisie.c
103 lines (84 loc) · 2.24 KB
/
tp3Saisie.c
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
#define _XOPEN_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
#ifdef _WIN32
#include <windows.h>
#endif
#include "tp3.h"
int askIdEtu(){
char *sidEtu = (char *)malloc(MAX_I+1);
int idEtu;
idEtu=0;
do{
printf("Saisissez un IdEtu:");
fgetsClean(sidEtu);
sscanf(sidEtu,"%d",&idEtu);
}while(idEtu==0);
free(sidEtu);
return idEtu;
}
int askIdBlock(){
char *sidEtu = (char *)malloc(MAX_I+1);
int idEtu;
idEtu=0;
do{
printf("Saisissez le numero de votre choix:");
fgetsClean(sidEtu);
sscanf(sidEtu,"%d",&idEtu);
}while(idEtu<=0);
free(sidEtu);
return idEtu;
}
float askMontant(){
char *smontant = (char *)malloc(MAX_I+1);
float montant=0.0;
do{
printf("Saisissez le montant de la transaction:");
fgetsClean(smontant);
sscanf(smontant,"%f",&montant);
}while(montant<=0.0);
return montant;
}
time_t askDate(){//demande de date et convertion en secondes
time_t timestamp;
do{
struct tm myDate;
printf("Pour le jour, ");
myDate.tm_mday = askIdBlock();
printf("Pour le mois, ");
myDate.tm_mon = askIdBlock()-1;
printf("Pour l annee, ");
myDate.tm_year = askIdBlock()-1900;
myDate.tm_hour = 1;
myDate.tm_min = 0;
myDate.tm_sec = 0;
timestamp = mktime( & myDate );
}while(timestamp == -1);
timestamp-=(timestamp%(3600*24)+3600);//pour normaliser les minutes
//printf( "Timestamp == %ld\n", timestamp );
// const char * strDate = asctime( localtime( & timestamp ) );
//printf( "Date de la transaction: %s\n", strDate );
return timestamp;
}
/** \brief saisie d'une chaine de char proprement
*
* \param char* s est la chaine en reference
*
*/
void fgetsClean(char *s){//cette fonction permet de lire une chaine correctement.
//printf("Rentez jusque 40 char:\n");
fgets(s,sizeof(char)*(MAX_DESCR),stdin);
//printf("vous avez rentre :%s\n",s);
//étape de cleaning de la chaine prise sur OC
char *p = strchr(s,'\n');
if (p != NULL)
*p = 0;
else
{
int c;
while ((c = fgetc(stdin)) != '\n' && c != EOF);
}
}