typedef char PAROLA[31];L'array avrà 31 elementi, per permettere di accomodare anche parole di esattamente 30 lettere (la 31-esima è '\0').
Le operazioni della struttura dati saranno controllo uguaglianza e diversità e controllo ordinamento lessicografico. Inoltre daremo le procedure per leggere e scrivere.
/*controllo uguaglianza*/
BOOL UgualeParola(PAROLA p1, PAROLA p2)
{
int i;
for(i= 0; p1[i] != '\0' && (p1[i] == p2[i]); i++);
return (p1[i] == p2[i]);
}
/*controllo diversità*/
BOOL DiversoParola(PAROLA p1, PAROLA p2)
{
int i;
for(i= 0; p1[i] != '\0' && (p1[i] == p2[i]); i++);
return (p1[i] != p2[i]);
}
/* altra versione
BOOL DiversoParola(PAROLA p1, PAROLA p2)
{
return ! UgualeParola(p1,p2);
}
*/
/*controllo ordine lessicografico
ritorna vero sse p1 minore strettamente di p2 */
BOOL MinoreLess(PAROLA p1, PAROLA p2)
{
int i;
for(i= 0; p1[i] != '\0' && (p1[i] == p2[i]); i++);
return (p1[i] < p2[i]);
}
/*lettura parola
la parola letta dal file fin sarà ritornata nella variabile p
si assume che la parola termina quando si trova un carattere che non è
una lettera o si sono lette 30 lettere*/
void LeggiParola(FILE * fin, PAROLA p)
{
int i, c;
for(i= 0; (c = fgetc(fin)) && isalpha(c) && (i < 30); i++)
p[i] = c;
p[i] = '\0';
}
/*scrittura parola
la parola contenuta nella variabile p sarà scritta sul file fout*/
void ScriviParola(FILE * fout, PAROLA p)
{
int i;
for(i= 0; p[i] != '\0'; i++)
fputc(p[i],fout);
}