/****************************************************************************/ /* M J O N O T . H ** ** ** Tiedostossa on merkkien ja merkkijonojen k„sittelyohjelmien yleiset ** vakiot ** makrot ** globaalit vakiotyyliset muuttujat ** aliohjelmien otsikot ** ** Tekij„t: Vesa Lappalainen ** Tehty: 13.11.1991 ** Muutettu: ** Mit„ muutettu: ** */ /****************************************************************************/ /* V a k i o t */ /* Vakiot sy”t”n onnistumiselle */ #define SYOTTO_OK 2 #define EI_MAHDU 1 #define OLETUS 0 #define TIEDOSTO_LOPPU -1 #define VIRHE_SYOTOSSA -2 /****************************************************************************/ /* M a k r o t */ #define N_S(nimi) (nimi),(sizeof(nimi)) /* ** Makro N_S tuottaa muuttujan nimen ja koon , toisistaan erotettuna. ** sopii k„ytett„v„ksi esim sellaisten aliohjelelmien kutsujen yhteydess„ ** jossa tarvitaan per„kk„in muuttujan nimi ja koko. ** Mik„li muuttuja on osoite esim. ** char p*; ** p = malloc(50); ** k„y huonosti, sill„ makro palauttaa muistimallista riippuen ** joko p,2 tai p,4 ** ** Sen sijaan m„„rittely ** char jono[30]; ** palauttaa jono,30 kuten pit„„kin! ** ** Esim. ** kopioi_jono(N_S(jono),"Kissa"); ** liita_jono(N_S(jono)," istuu!"); ----------------------------------------------------------------------------*/ /****************************************************************************/ /****************************************************************************/ /* G l o b a a l i t (vakio)muuttujat */ extern char *VALIMERKIT; /* Merkit joiden j„lkeen alkaa uusi sana. */ /****************************************************************************/ /* A L I O H J E L M A T */ /* ** ** Tiedostossa on seuraavia aliohjelmia: ** tee_jono - luo uuden merkkijonon jonne jono kopioidaan ** kopioi_jono - kopioi kork. annetun m„„r„n merkkej„ ** liita_jono - liitt„„ jonon toisen per„„n, tulos ** korkeintaan max.pituus mittainen ** f_lue_jono - lukee tiedostosta merkkijonon ** lue_jono - lukee p„„tteelt„ merkkijonon ** lue_jono_oletus - lukee p„„tteelt„ merkkijonon. ** N„ytt””n tulostetaan haluttu viesti ja ** jonon oletusarvo, mik„li painetaan RET ** lue_kokluku_oletus - luetaan kokonaisluku, jolle k„ytet„„n oletusarvoa ** mik„li heti painetaan RET ** Ankka Aku|12234-34|... ** poista_alkutyhjat - poistaa merkkijonon alussa olevat v„lily”nnit ** poista_lopputyhjat - poistaa merkkijonon lopussa olevat v„lil. ** poista_2_tyhjat - muuttaa merkkijonossa kaikki per„kk„iset ** v„lily”nnit yhdeksi v„lily”nniksi ** poista_tyhjat - poistaa alusta ja lopusta kaikki sek„ ** muualta moninkertaiset v„lily”nnit ** isoksi - muuttaa kirjaimen isoksi kirjaimeksi huomioiden ** skandit ** pieneksi - muuttaa pieneksi huomioiden skandit ** jono_isoksi - muuttaa jonon kaikki merkit isoiksi ** jono_pieneksi - muuttaa jonon kaikki merkit pieniksi ** jono_alku_isoksi - muuttaa jonon kaikki sanojen alut isoiksi ** ja kaikki muut pieniksi ** wildmat - vertaa onko sana == maski, miss„ maskissa ** voi olla jokeri-merkkej„ ** paikka - palauttaa kirjaimen 1. indeksin merkkijonossa ** */ char *tee_jono(char *); int kopioi_jono(char *, int, char *); int liita_jono(char *, int, char *); int f_lue_jono(FILE *, char *, int); int lue_jono(char *, int); int lue_jono_oletus(char *, int, int, char *, char *, int); int lue_kokluku_oletus(int, int *); char *poista_alkutyhjat(char *); char *poista_lopputyhjat(char *); char *poista_2_tyhjat(char *); char *poista_tyhjat(char *); char isoksi(char); char pieneksi(char); char *jono_pieneksi(char *); char *jono_isoksi(char *); char *jono_alku_isoksi(char *); int wildmat(register char *, register char *); char *palanen(char *, char *, int *); int laske_merkit(char *,char *); int paikka(char *,char );