Sommaire: Source du langage C
1. Algorithmes(22)
2. Conversion(5)
3. Gestion des dates et du temps(9)
4. GTK+(5)
5. Jeux(4)
6. Les structures de données(10)
7. Manipulation de fichier(10)
8. Manipulation des chaînes de caractères(14)
9. Manipulation des bits(3)
10. Mathématiques(5)
11. Saisie utilisateur(1)
12. Gestion dynamique de la mémoire(2)
13. Linux(5)
14. Divers(11)
Extrait du cours source du langage C
Algorithmes
Déterminer la parité d’un char
La parité consiste à calculer le nombre de bits d’une variable (ici un unsigned char) égaux à 1 et si cette somme est paire,la parité de cette variable le sera aussi, sinon elle sera impaire.
intparite_paire (unsigned charnombre)
{
intret = 0;
while(nombre)
{
ret ^=nombre & 1;
nombre >>= 1;
}
returnret;
}
Cryptage selon la méthode de César
voidcesar (char *str, intdecalage)
{
if(str)
{
const charalphabet[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’,
‘k’, ‘l’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’,
‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’};
intmaj = 0;
while(*str)
{
inti;
maj =isupper (*str);
*str =tolower (*str);
for(i = 0; i < 26; i++)
{
if(alphabet[i] == *str)
{
*str =alphabet[(i+decalage)%26];
if(maj)
{
*str =toupper (*str);
}
break;
}
}
str++;
}
}
Tri rapide d’un tableau
Cette fonction est une version simplifiée de la fonction de la bibliothèque standard qsort.
voidechange (int *tab, inti, intj)
{
inttampon =tab[i];
tab[i] =tab[j];
tab[j] =tampon;
}
voidtrirapide (int *tab, intG, intD)
{
intg, d;
intval;
if(D <=G)
{
return;
}
val =tab[D];
g =G;
d =D – 1;
do
{
while((tab[g] <val))
{
g++;
}
while((tab[d] >val) &&(d>G))
{
d–;
}
if(g <d)
{
echange (tab, g, d);
}
} while(g <d);
echange (tab, g, D);
trirapide (tab, G, g – 1);
trirapide (tab, g + 1, D);
}
Conversion
Conversion binaire -> ASCII
La fonction get_char_from_binpermet de convertir une représentation binaire en nombre.
unsigned char get_char_from_bin (const char *bin)
{
int i;
int d;
unsigned char res;
res = 0;
i =strlen(bin)-1;
for (d = 1; (d <= 128) &&(i>=0) ; d*=2, i–)
{
if (bin[i] == ‘1’)
res +=d;
}
return (res);
}
Obtenir la représentation en base N d’un entier
La fonction itoaretourne la représentation en base radix(entre 2 et 36) de l’entier value, sous forme d’une chaîne de caractères.
La chaîne de caractères string doit être assez grande pour contenir la représentation.
char *itoa (int value, char *string, int radix)
{
char tmp[32];
char *tp =tmp;
int i;
unsigned v;
int sign;
char *sp;
if (radix > 36 ||radix <= 1)
{
return 0;
}
sign =(radix == 10 &&value < 0);
if (sign)
{
v = -value;
}
else
{
v =(unsigned)value;
}
while (v ||tp ==tmp)
{
i =v %radix;
v =v /radix;
………
Cours gratuit: Source du langage C (666 KO) (Cours PDF)