Bon(jour)/soir à tous,

Afin d'éviter les "scanf" en C, et ne souhaitant pas absorber différents code du web, j'ai fais un petit quelque chose.
Le code se divise en 2 parties :
  1. fonctions.h
  2. source.c


Ceci afin de le rendre plus lisible.

Je me permet alors de vous le publier ici, pour en obtenir des commentaires sur la logique, et vos conseils qui pourrait permettre de l'améliorer et moi aussi.

Merci à vous.

Fonctions.h
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
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
#include <string.h>
#include <stdio.h>
#define TRUE 1
#define FALSE 0
 
void menu()
{
	char t0[] = ("********************************");   //Un Affichage basic me direz vous. 
	char t1[] = ("*                              *");
	char t2[] = ("*         Conversion           *");
	char t3[] = ("*                              *");
	char t4[] = ("********************************");
 
	puts(t0); 
	puts(t1); 
	puts(t2); 
	puts(t3);
	puts(t4); 
}
 
short saisie(char *nb,int lgt)
{
	short i,j; 
	short taille=0; 
	char comp[] = { '0','1','2','3','4','5','6','7','8','9','/0' }; //Tableau de comparaison CHAINE de Char et nombre. 
 
	for (i = 0; i < lgt; i++)  //lgt = longueur de la chaine original envoyée en 2nd paramètre. 
	{
		for (j = 0; j < 11; j++)
		{
			if (*(nb + i) == comp[j]) //nb = Chaine original envoyé en 1er paramétre. 
			{
				taille ++; //Si la comparaison est vraie, on incrémente la taille. ===> Cette variable permettra de vérifier si le nbre de caractère est bon. 
				j = 11; //Et si Taille n'est pas bon, c'est qu'un caractère n'est pas un nombre.  
			}
		}
	}
 
	if (taille == lgt)
		return TRUE;
	else
		return FALSE; 
}
 
int conversion(char *lg)
{
	int i, j, k, z;
	int nbre = 0;
	char comp[] = { '0','1','2','3','4','5','6','7','8','9' }; //Chaine de comparaison. 
 
	for (i = 0; i < 10; i++)
	{
 
		for (j = 0; j < 10; j++)
		{
			if (comp[j] == *(lg + i)) // Nul besoin de commentaire ici. #Paradox
			{
				for (k = 0, z = 1; k < strlen(lg) - (i + 1); k++) z *= 10; // La variable z permet de bien placer les unité diziaine et centaine. 
				nbre += j * z;
				z = 1; //On le réinitialise a 1. 
			}
		}
 
	}
 
	return nbre; //On retourne la variable mais convertie en int. 
}
 
void EntrerNbre(char *lg)
{
	char clav[10];
	short pass = 0;
	short gardien, i;
 
	printf("\nSaisissez un nombre > ");
	do
	{
		if (pass)
		{
			printf("Vous n'avez pas ecris un nombre. vous avez entre %s \n", clav);
		}
		gets(clav);
		gardien = saisie(&clav, strlen(clav));
		pass++;
	} while (!gardien);
 
	strcpy(lg, clav);
 
}
Le source.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#include "fonctions.h"
#include <stdio.h>
void main()
{
	char nbr[10];
	int i;
	menu();
	EntrerNbre(&nbr);
	i = conversion(&nbr);
	printf("\n\n====> %d <======\n", i);
}