@ -95,6 +95,8 @@ Nous avons vu brièvement dans la première section de ce chapitre
@@ -95,6 +95,8 @@ Nous avons vu brièvement dans la première section de ce chapitre
@ -125,6 +127,20 @@ et afficher un caractère dans \texttt{stdout}. Tout cela semble
@@ -125,6 +127,20 @@ et afficher un caractère dans \texttt{stdout}. Tout cela semble
très bien, mais la fonction de lecture est piégeuse
"\textsc{It's a trap}", comme nous allons bientôt le voir.
Vous devez logiquement penser que si nous allons lire un caractère
depuis l'entrée du programme, nous pouvons utiliser une variable de
type \texttt{char}, puisque ce type est prévu pour stocker un
caractère. Seulement, pour indiquer l'abscence de caractère,
la fin du fichier, il nous faut une valeur \textsl{out of band}
et donc getchar renvoit en fait un \texttt{int} dont une valeur
particulière sera nommée \texttt{EOF}, \textsl{end of file}.
\begin{verbatim}
while (EOF != (foo=getchar())) { ....
\end{verbatim}
Voilà un piège éliminé, et vous trouverez un exemple complet
un peu plus loin.
\subsection{Écrire : \texttt{printf}}
\index{printf}
@ -147,20 +163,70 @@ Le premier de ces paramêtres, \texttt{"foo = \%d\textbackslash{}n"},
@@ -147,20 +163,70 @@ Le premier de ces paramêtres, \texttt{"foo = \%d\textbackslash{}n"},
est appelé \emph{chaine de format}. C'est une chaine de caractères
que l'on peut classer en trois catégories~:
\textsl{caractères crus} : ils sont directements poussés vers la sortie.
\begin{itemize}
\textsl{codes de format} : les fragments qui commencent par le
caractère '\%'.
\item{\textsl{caractères crus} : ils sont directements poussés vers
la sortie. La plupart d'entre eux donnent le résultat attendu.}
\textsl{échappements} : les caratères précédés d'un
'\textbackslash'.
\item{\textsl{codes de format} : les fragments qui commencent par le
caractère '\%'. Ils servent à contrôler l'apparence de ce qui va
suivre. Par exemple \texttt{\%x} va afficher un int en hexadécimal}
\item{\textsl{échappements} : les caractères précédés d'un
'\textbackslash' ou \textsl{backslash}\footnote{barre-penchée-du-8}
permettent d'inclure dans la chaine de format des caractères
non imprimables.
Par exemple, \texttt{'\textbackslash{}n'} va générer le caractère
\textsl{newline} qui marque la fin d'une ligne de texte.
}
\end{itemize}
\subsection{Lire : \texttt{scanf}}
\index{scanf}
Avez-vous bien révisé la section qui cause des pointeurs ?
@ -351,7 +417,7 @@ divers comme Open Sound Control (page \pageref{chap:OSC}) ou
@@ -351,7 +417,7 @@ divers comme Open Sound Control (page \pageref{chap:OSC}) ou
libsndfile (page \pageref{chap:son}).
Et pour les gens du système~:
l'utilisation des signaux (page \pageref{get-signal}),
le chargement dynamique (page \pageref{ex_dlopen}.
le chargement dynamique (page \pageref{ex_dlopen}).