Page 544 - Informatica dalla A a Z
P. 544

return strcat(invertiStringa(s+1), t);

           }
           Esempio2:
           Si scriva una funzione che legge da un file, passato come parametro, un insieme di stringhe,
           di lunghezza variabile e terminate da \0, e le scrive a schermo al contrario, ovvero da destra
           verso sinistra. Ogni stringa può essere lunga non più di 30 caratteri; il file termina col ca-
           rattere speciale EOF.
           #include <stdio.h>
           #define MAX 30
           void stampa(char c[], int i) {

               5
               while (i > 0)
               printf("%c", c[--i]);
               printf("\n");
           }
           void stampaContrario(FILE *f) {
               char c, s[MAX];
               int i = 0;
               rewind(f);
               while ((c = getc(f)) != EOF) {
                       if (c != ‘\0’ && c != ‘ ‘) s[i++] = c;
                       else if (c == ‘\0’) {
                            stampa(s, i);
                            i = 0;
                       }
               }
           }
           Esempio3:
           Si scriva una funzione in C che prende in ingresso un puntatore a file e restituisce un altro punta-
           tore a file. Il primo file contiene un insieme di parole di lunghezza variabile e separate da uno o
           più spazi. Il secondo file deve essere scritto dalla funzione e deve contenere la lunghezza delle
           diverse parole lette. L’ultimo valore scritto deve essere 0.
           #include <stdio.h>
           #define MAX 30
           FILE *lunghezze(FILE *f) {
               FILE *fp;

               char c;
               int i = 0;
               rewind(f);
               if ((fp = fopen("lunghezze", "wb+")) == NULL) return NULL;
               while ((c = getc(f)) != EOF) {
                       if (c != ‘ ‘) {
                            i++;
                       }
                                                            540
   539   540   541   542   543   544   545   546   547   548   549