18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Il programma seguente legge da standard input, con possibilità di redirezione dello standard<br />

input, una matrice avente un numero arbitrario di elementi <strong>per</strong> ciascuna colonna. Il numero di<br />

elementi è comunque limitato a 10, a causa della dichiarazione statica della matrice che deve<br />

contenere i dati. Anche in questo caso, non sono effettuati i controlli necessari a verificare che si<br />

leggano più righe e colonne di quanto sia possibile memorizzare nella matrice, ma le modifiche<br />

da apportare sono semplici e vengono lasciate come esercizio <strong>per</strong> il lettore.<br />

#include <br />

#include <br />

#define MAX_N (10)<br />

int main()<br />

{<br />

char s[100], *s1;<br />

float m[MAX_N][MAX_N];<br />

int i, j;<br />

}<br />

i = 0;<br />

while (fgets(s, sizeof(s), stdin)) {<br />

j = 0;<br />

if ((s1 = strtok(s, " ")) != NULL) {<br />

sscanf(s1, "%f", &m[i][j]);<br />

printf("%f ", m[i][j]);<br />

j++;<br />

} else {<br />

printf("errore nel parsing dei valori\n");<br />

return 1;<br />

}<br />

while ((s1 = strtok(NULL, " ")) != NULL) {<br />

sscanf(s1, "%f", &m[i][j]);<br />

printf("%f ", m[i][j]);<br />

j++;<br />

}<br />

printf("\n");<br />

i++;<br />

}<br />

return 0;<br />

Il programma legge le stringhe dal file di ingresso con l’istruzione fgets, corrispondenti ad una<br />

riga della matrice. Per isolare gli elementi di ciascuna colonna, viene usata la funzione di libreria<br />

strtok. Un token si può definire come una sottostringa della stringa da partizionare, che sia<br />

delimitato da un opportuno delimitatore. Per esempio, la stringa<br />

"10 40 3.5 78 1"<br />

viene suddivisa nei token<br />

"10" "40" "3.5" "78" "1"<br />

123

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!