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, pertanto dobbiamo modificare anche la sua interfaccia.
Inoltre poichè gli identificatori sono array non è possibile assegnarli direttamente; ma invece occorre una funzione apposita.
Sviluppiamo ora le varie funzioni che appaiono nella nuova interfaccia del modulo.
Scrittura di un identificatore
void Scrivi_Ident(IDENT id)
{
    int i;

    for(i=0; i < 20 && id[i] != '\0'; i++)
        Scrivi_Car(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
BOOL Uguali_Ident(IDENT id1, IDENT id2)
{
    if(strcmp(id1,id2) == 0) return TRUE;
     else return FALSE;
}
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.