Salut à tous,
je suis pour le moment en train de travailler sur mon examen de repêchage en c et j'ai un soucis.
Je dois faire une conversion d'une chaîne de caractères en un entier pour vérifier l'intégrité de mes données (je dois vérifier si il s'agit bien d'une heure valide).
Problème, lorsque j'utilise la fonction "atoi()", la première conversion se passe bien mais la seconde pas... ma deuxième variable temporaire prend en fait la valeur de la première et celle de la deuxième. J'ai comme l'impression qu'il y a un buffer sur la fonction "atoi()" mais je ne sais pas quoi faire pour le vider si c'est bien le cas.
Voici ma fonction:
Je suis sur que ça doit être une bêtise mais vu l'heure tardive, la bêtise devient un gros problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 int blindage_heures(char *chiffre) { int i = 0; int ok = 0; char tmph[2] = {0}; char tmpm[2] = {0}; int valeurh = 0; int valeurm = 0; // doit être sous le format HH:MM while(i<5) { if(i == 0 || i == 1) { if(chiffre[i] < 48 || chiffre[i] > 57) { ok = 101; } } if(i == 2) { if(chiffre[i] != ':') { ok = 101; } } if(i == 3 || i == 4) { if(chiffre[i] < 48 || chiffre[i] > 57) { ok =101; } } i++; } tmph[0] = chiffre[0]; tmph[1] = chiffre[1]; valeurh = atoi(tmph); if(valeurh > 12) // Ne peut pas dépasser 12 heures { ok = 101; } tmpm[0] = chiffre[3]; tmpm[1] = chiffre[4]; valeurm = atoi(tmpm); if(valeurm > 59) // Ne peut pas dépasser 60 minutes { ok = 101; } if(valeurh == 12 && valeurm != 0) // Ne peut pas travailler plus de 12h { ok = 101; } return ok; }
Merci d'avance pour votre aide !!
Partager