TULKKITA.C muuttuneet osat: =========================== ... static char *EI_AUKEA = "Tiedosto "SANASTO" ei aukea lukemista varten!"; static char *MUOTOVIRHE = "Sanastotiedostossa muotovirhe!"; /****************************************************************************/ char /* NULL = onnistui */ *lue_sanasto( /* muuten virheilmoituksen osoite */ Sanasto_tyyppi *sanasto,/* t Luettu sanasto */ char *ohjelman_nimi /* s Ohjelman koko nimi. */ ) /* ** Funktiolla luetaan sanasto tiedostosta. Mik„li kaikki menee hyvin, ** palautetaan NULL. Huonossa tapauksessa tulostetaan virherivi ja ** palautetaan virheilmoitus! ** ** Kutsuu: liita_jono ** kopio_jono ** f_lue_jono ** tee_kielet ** lisaa_sanat ----------------------------------------------------------------------------*/ { FILE *f; char jono[200]=";", *virhe=NULL; kopioi_jono(N_S(jono),ohjelman_nimi); #ifdef TURBO_C { /* Muutetaan C:\OHJELMAT\TULKKI.EXE -> C:\OHJELMAT\SANASTO.DAT */ char *p; p=strrchr(jono,'\\'); /* Etsit„„n viimeinen \ jonka j„lkeen poikki. */ if (p!=NULL) { p++; *p=0; liita_jono(N_S(jono),SANASTO); } else kopioi_jono(N_S(jono),SANASTO); } #else kopioi_jono(N_S(jono),SANASTO); #endif f = fopen(jono,"rt"); if (!f) return EI_AUKEA; do { /* Luetaan kunnes tulee 1. oikea rivi, josta lasketaan kielet */ if ( f_lue_jono(f,N_S(jono)) < OLETUS ) { virhe = MUOTOVIRHE; goto sulje; } } while (jono[0]==';'); if ( (virhe = tee_kielet(sanasto,jono)) != NULL ) goto sulje; while (!feof(f)) { if ( f_lue_jono(f,N_S(jono)) <= OLETUS ) continue; /* Tyhj„t rivit unoh.*/ if ( jono[0] == ';' ) continue; /* Kommentit unohdet.*/ if ( (virhe = lisaa_sanat(sanasto,jono)) != NULL ) break; } sulje: if (virhe) printf("%s\n",jono); fclose(f); return virhe; }