Commit 6958e492 authored by Sebastien FAUCOU's avatar Sebastien FAUCOU
Browse files

semaine1 : ajout sujet

parents
# Table of Contents
Vous savez déjà qu’il n’existe pas de type pour les chaînes de caractères en C. La
convention utilisée dans la bibliothèque standard est de représenter une chaîne
sous la forme d’un tableau de caractères, terminé par le caractère nul `'\0'`, qui fait
office de marqueur de fin de chaîne.
Cette semaine, il est demandé de réaliser une implémentation de
trois fonctions de manipulation des chaînes de caractère de la bibliothèque
standard: `strnlen`, `strncmp` et `strncpy`. Le squelette de code à compléter,
ainsi qu’un programme principal de test, sont donnés dans le fichier `ap-semaine1.c`.
1. Compléter le corps des fonctions manquantes. On supposera que les paramètres
passés aux fonctions sont valides.
Les implantations doivent passer tous les tests fournis.
Attention, les tests de la fonction `iutna_strncpy` utilisent la fonction
`iutna_strncmp`. Cette dernière doit donc avoir été écrite et validée avant.
2. Soient les fonctions `f1` et `f2` ci-dessous :
void f1(int tab[], size_t len)
{
int tmp = tab[0];
for(size_t cpt = 0; cpt < len-1; cpt++)
{
tab[cpt] = tab[cpt+1];
}
tab[len-1] = tmp;
}
void f2(int tab[], size_t len)
{
int* idx = tab;
int* last = idx + len;
int tmp = *(tab+0);
while(idx < (last - 1))
{
*idx = *(idx+1);
idx++;
}
*idx = tmp;
}
Ces deux fonctions font la même chose. Pour s&rsquo;en convaincre, une possibilité
est de représenter leur exécution par une succession de schémas décrivant
l&rsquo;état de la mémoire. Une autre solution, plus technique, consiste à créer un
programme principal, puis utiliser `gdb` pour suivre l&rsquo;exécution pas à pas.
Mettre en oeuvre ces deux techniques.
3. Écrire une nouevelle implémentation pour chacune des trois fonctions de la
question 1 n&rsquo;utilisant pas l&rsquo;opérateur `[]`.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment