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