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.
Nell’esempio, i singoli valori numerici sono delimitati da spazi: i delimitatori sono quindi gli spazi<br />
bianchi, mentre i singoli token sono le sottostringhe che rappresentano i valori numerici.<br />
La prima volta che la funzione strtok viene chiamata, riceve in ingresso la stringa da decomporre<br />
in token (s nell’esempio), e il separatore dei token (uno spazio, nell’esempio). Ogni<br />
successiva chiamata a strtok deve passare NULL come stringa, poichè questa è stata specificata<br />
nella prima chiamata. Ecco <strong>per</strong>chè nella chiamata ad strtok presente nel ciclo while il primo<br />
parametro è NULL. Il ciclo continua fintanto che strtok ritorna un puntatore valido (non nullo)<br />
che rappresenta il puntatore al primo carattere del token successivo. Gli indici che servono <strong>per</strong><br />
tenere traccia di quale elemento viene assegnato nella matrice sono opportunamente incrementati<br />
all’avanzare del numero di riga e colonna.<br />
12.10 Redirezione dell’input e dell’output<br />
Le funzioni di I/O come fgets, fputs, fscanf, fprintf e le altre funzioni che leggono e scrivono<br />
su file, <strong>per</strong>mettono la possibilità di redirigere l’input e l’output al momento dell’invocazione del<br />
programma da linea di comando.<br />
E’ sempre possibile utilizzare le funzioni indicate in sostituzione delle funzioni scanf e printf<br />
già ampiamente utilizzate, semplicemente indicando che letture e scritture avvengono sui file<br />
standard stdin e stdout. Per esempio, le coppie di istruzioni seguenti sono equivalenti, quando<br />
l’interazione utente avviene tramite tastiera e video:<br />
scanf("%d %f %s", &intero, &numero, stringa);<br />
fscanf(stdin, "%d %f %s", &intero, &numero, stringa);<br />
printf("%d %f %s\n", intero, numero, stringa);<br />
fprintf(stdout, "%d %f %s\n", intero, numero, stringa);<br />
Quando vengono utilizzate tali funzioni <strong>per</strong> la lettura/scrittura dei dati, è possibilie sfruttare<br />
la tecnica della redirezione dell’input/output da linea di comando, <strong>per</strong> fornire i valori di ingresso<br />
ad un programma e <strong>per</strong> specificare un file di output alternativo adstdout. Questo utile espediente<br />
sfrutta l’associazione tra il file standard stdin e il terminale (tipicamente la tastiera), e tra il file<br />
standard stdout e la console (il video).<br />
E’ possibile creare dei programmi che leggano il proprio input dal filestdin e poi, al momento<br />
di invocare il programma, usare l’o<strong>per</strong>atore di redirezione della shell <strong>per</strong> redirigere il contenuto<br />
di un file sullo standard input del programma. Molti programmi di sistema della shell di UNIX,<br />
come cat, possono essere usati efficacemente in questo modo.<br />
Allo stesso modo, i programmi che scrivono i dati su stdout possono essere rediretti <strong>per</strong><br />
scrivere i valori di uscita su un file genrico.<br />
12.10.1 Il programma count.c<br />
Il programma count.c conta il numero di caratteri che vengono letti dallo standard input.<br />
#include <br />
#include <br />
int main()<br />
{<br />
char s[100];<br />
124