/* paragrafo 1.9 pagina 31 esercizio 1.20 Sostituisce i caratteri di tabulazione nel testo in ingresso con il numero di spazi bianchi equivalente. Si assume un intervallo predeterminato di tabulazione. */ #include <stdio.h> #define MAXLINE 1000 #define TAB 4 int getline(char line[], int maxline); int main() { int len, i, k; char line[MAXLINE]; printf("Dimensione buffer:%4d caratteri\n", MAXLINE); while ((len = getline(line, MAXLINE)) > 0) { i = 0; k = 0; while (line[i] != '\0') { ++k; if (line[i] != '\t') putchar(line[i]); else { putchar(' '); for ( ; k % TAB > 0; ++k) putchar(' '); } ++i; } if (line[len - 1] != '\n') putchar('\n'); } return 0; } /* getline: legge una riga in ingresso, la assegna a s, ne restituisce la lunghezza */ int getline(char s[], int lim) { int c, i; for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i) { s[i] = c; } if (c == '\n') { s[i] = c; ++i; } s[i] = '\0'; return i; }