Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Swan GONZALES
iutna-info1-ap-2021
Commits
6958e492
Commit
6958e492
authored
Apr 01, 2021
by
Sebastien FAUCOU
Browse files
semaine1 : ajout sujet
parents
Changes
1
Hide whitespace changes
Inline
Side-by-side
semaine1/README.md
0 → 100644
View file @
6958e492
# 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
’
en convaincre, une possibilité
est de représenter leur exécution par une succession de schémas décrivant
l
’
état de la mémoire. Une autre solution, plus technique, consiste à créer un
programme principal, puis utiliser
`gdb`
pour suivre l
’
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
’
utilisant pas l
’
opérateur
`[]`
.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment