- Stampa di un carattere
void Print_Char(char c)
/*scrive il carattere c sul file `uscita.txt'*/
{
fputc(c,OUT);
}
- Andare a capo sul file di output
void A_Capo_Stampa(void)
/*avanza la scrittura sul file uscita.txt alla riga successiva*/
{
fputc('\n',OUT);
}
- Andare a capo sul file di input
void A_Capo_Lettura(void)
/*avanza la lettura sul file ingresso.txt alla riga successiva*/
{
Recupera_Linea();
}
che utilizza la funzione ausiliaria
void Recupera_Linea(void)
{
int i, c, j;
for(i = 0; i < DIM && (c = fgetc(INP)) != EOF && c != '\n'; i++)
linea_corrente[i] = c;
if(c == EOF) finito = TRUE;
linea_corrente[i] = '\0';
puntatore = 0;
}
- Guarda il prossimo carattere
char Look_Char(void)
/*ritorna il prossimo carattere sul file ingresso.txt,
non avanza la lettura
se la linea è finita ritorna '/0'*/
{
return linea_corrente[puntatore];
}
- Prende il prossimo carattere
char Get_Char(void)
/*ritorna il prossimo carattere sul file ingresso.txt,
avanza la lettura
se la linea è finita va a capo*/
{
if(linea_corrente[puntatore] != '\0'){
puntatore ++;
return linea_corrente[puntatore-1];
}
else
if(! finito){
Recupera_Linea();
return Get_Char();
}
else
printf("ERROE: tentato di leggere sul file vuoto\n");
}
- Salta un carattere
void Salta(char c)
/*avanza la lettura sul file ingresso.txt fino a superare
la prossima occorenza di c, si assume che ci sia */
{
while(Look_Char() != c)
Get_Char();
Get_Char();
}
- Salta gli spazi
void Salta_Blanks(void)
/*avanza la lettura sul file ingresso.txt fino a raggiungere
il primo carattere diverso dal ' ' sulla linea corrente,
altrimenti raggiunge la fine della linea */
{
while(Look_Char() ==' ') Get_Char();
}
- Inizializzazione e fine
- I file deveono essere aperti per la lettura e la scrittura e poi
richiusi, queste operazioni vengono fatte da due procedure (funzioni)
appropriate che andranno chiamate rispettivamente come prima e come ultima
cosa nel main del programma.
void Inizializza(void)
{
INP = fopen("ingresso.txt","r");
OUT = fopen("uscita.txt","w");
Recupera_Linea();
}
void Smobilita(void)
{
fclose(INP);
fclose(OUT);
}
A questo punto abbiamo sviluppato due file che faranno parte del
programma, l'interfaccia e il body di questo modulo: