Sviluppo di IDENT

Progettiamo una stuttura dati per gli identificatori, che sono semplicemente delle sequenze di lettere maiuscole; assumiamo inoltre che non siano più lunghi di 20.
Questi identificatori sono realizzati semplicemente come stringhe C, cioè array di caratteri che usano il carattere nullo ('\0') come terminatore.
La corrispondente dichiarazione di tipo C è
typedef char IDENT[21];
Dato che gli identificatori sono degli array, non è possibile avere funzioni che li ritornano, occorre usare invece dei parametri variabile.
Sviluppiamo ora le varie funzioni che appaiono nell'interfaccia del modulo.
Stampa di un identificatore
void Stampa_Ident(IDENT id)
{
    int i;

    for(i=0; i < 99 && id[i] != '\0'; i++)
        Print_Char(id[i]);
}
Lettura di un identificatore
void Leggi_Ident(IDENT id)
/*gli identificatori devono avere meno di 20 lettere*/
{
    int i;

    for(i=0; i < 20 && isupper(Look_Char()); i++)
        id[i] = Get_Char();
    id[i] = '\0';
}
Controllo se due indentificatori sono uguali
int Uguali_Ident(IDENT id1, IDENT id2)
{
    return strcmp(id1,id2) == 0;
}
Copia di due identificatori
Poichè gli identificatori sono array non è possibile assegnarli direttamente ma invece occorre una funzione apposita.
void Copia_Ident(IDENT id1, IDENT id2)
/*copia id2 in id1*/
{
    strcpy(id1,id2);
}
A questo punto abbiamo sviluppato due file che faranno parte del programma, l'interfaccia e il body di questo modulo: IDENT.h e IDENT.c.