Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Il programma legge delle stringhe di testo con fgets d<strong>alla</strong> console (il file di input è stdin),<br />
di lunghezza massima pari a 100 caratteri. Si noti il prezioso uso dell’o<strong>per</strong>atore sizeof nella<br />
chiamata a fgets. La stringa letta viene analizzata con sscanf, la quale si aspetta il nome dello<br />
studente, cioè una stringa, e il voto, cioè un intero. Il ciclo continua fintanto che non viene<br />
immesso il carattere EOF (End Of File), che da tastiera equivale ad immettere il carattere Ctrl-<br />
D 4 . Nel ciclo viene tenuta traccia del numero di studenti e della media complessiva dei loro voti.<br />
I dati vengono memorizzati nel vettore di strutture stud soltanto se il voto immesso è valido,<br />
ovvero se è un intero compreso tra 18 e 30. Inoltre viene tenuta traccia del numero di immissioni<br />
non valide.<br />
12.7 Lettura di file strutturati con fgets e sscanf<br />
Quando un file ha una struttura nota, e tipicamente di tratta di file di testo che contengono<br />
informazioni strutturate, è possibile utilizzare lo schema di lettura basato su fgets e sscanf.<br />
Il programma seguente legge da standard input, con possibilità di redirezione dello standard<br />
input, una matrice di 5 elementi.<br />
#include <br />
#include <br />
#define N (5)<br />
int main()<br />
{<br />
char s[100];<br />
float m[N][4];<br />
int i;<br />
}<br />
i = 0;<br />
while (fgets(s, sizeof(s), stdin)) {<br />
sscanf(s, "%f %f %f %f", &m[i][0], &m[i][1], &m[i][2], &m[i][3]);<br />
printf("%f %f %f %f\n", m[i][0], m[i][1], m[i][2], m[i][3]);<br />
i++;<br />
}<br />
return 0;<br />
Da notare che il programma non effettua controlli sul fatto che vengano lette più righe di quelle<br />
memorizzabili nella matrice.<br />
12.8 I/O con le funzioni fscanf e fprintf<br />
Quando un file da leggere o scrivere ha una struttura nota è possibile anche usare le istruzioni<br />
fscanf e fprintf <strong>per</strong> la lettura e <strong>per</strong> la scrittura.<br />
Queste funzioni si comportano come le funzioni scanf e printf, già più volte utilizzate <strong>per</strong><br />
la lettura da tastiera e l’output a video. Le funzioni fscanf e fprintf hanno il medesimo<br />
4 Tenere premuti contemporaneamente i tasti Control e D.<br />
121