talking about fgets
This commit is contained in:
48
chap/C.tex
48
chap/C.tex
@@ -163,7 +163,8 @@ un peu plus loin.
|
||||
La fonction \texttt{printf} permet d'afficher sur la sortie
|
||||
standard le contenu d'une (ou plusieurs)
|
||||
variable sous diverses présentations,
|
||||
qui sont contrôlables par un tout petit DSL\index{DSL}~:
|
||||
qui sont contrôlables par un tout petit
|
||||
DSL\footnote{\textsl{domain specific language}}\index{DSL}~:
|
||||
la chaine de format.
|
||||
|
||||
\begin{verbatim}
|
||||
@@ -217,18 +218,61 @@ for (foo=0; foo<1000; foo++) {
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
% ---------------------------------------------------------
|
||||
%
|
||||
% voir aussi ~/code/network/README.md
|
||||
%
|
||||
\subsection{Lire : \texttt{fgets}}
|
||||
\index{fgets}
|
||||
|
||||
Cette fonction a pour but de lire une ligne de texte depuis
|
||||
une entrée (stdin, fichier, socket\index{socket}...)
|
||||
et de la ranger en mémoire.
|
||||
Mais commençons par lire la documentation\index{RTFM} de cette fonction,
|
||||
en nous concentrant sur ces deux passages, avant de passer à
|
||||
un exemple\footnote{encore en phase de méditation}.
|
||||
|
||||
Voici deux extraits de ce que nous affirme la page du manuel~:
|
||||
|
||||
\begin{verbatim}
|
||||
DESCRIPTION
|
||||
fgets() reads in at most one less than size characters from stream and
|
||||
stores them into the buffer pointed to by s. Reading stops after an
|
||||
EOF or a newline. If a newline is read, it is stored into the buffer.
|
||||
A terminating null byte ('\0') is stored after the last character in
|
||||
the buffer.
|
||||
|
||||
RETURN VALUE
|
||||
fgets() returns s on success, and NULL on error or when end of file oc‐
|
||||
curs while no characters have been read.
|
||||
\end{verbatim}
|
||||
|
||||
Prenez le temps d'y réfléchir, et essayons un cas simple d'utilisation
|
||||
pour examiner le comportement de cette fonction. Nous allons
|
||||
boucler sur la lecture d'une ligne depuis l'entrée standard dans
|
||||
un buffer d'une taille fixée, puis afficher le nombre de caractères
|
||||
que nous avons reçus.
|
||||
|
||||
\lstinputlisting[language=c]{code/C/fgets-simple.c}
|
||||
|
||||
|
||||
% ---------------------------------------------------------
|
||||
%
|
||||
%
|
||||
|
||||
\subsection{Lire : \texttt{scanf}}
|
||||
\index{scanf}
|
||||
|
||||
Avez-vous bien révisé la section qui cause des pointeurs ?
|
||||
Êtes-vous prèt à d'étranges comportements ?
|
||||
Alors les subtilités de scanf vont vous plaire.
|
||||
À ne plus savoir où peut être la tête de lecture ?
|
||||
Alors les subtilités de \texttt{scanf} vont vous plaire.
|
||||
|
||||
\textit{To be continued...}
|
||||
|
||||
% ---------------------------------------------------------
|
||||
|
||||
|
||||
\subsection{Les fichiers}\index{fopen}\index{fclose}
|
||||
|
||||
Lire et écrire depuis les flux gérés par le système, c'est bien, mais
|
||||
|
||||
Reference in New Issue
Block a user