#include #define STORLEK 20000 #define LANGD 50 #define PTAL 11 /* p[] */ #define bokstav(t) (97<=t&&t<=125||65<=t&&t<=93) #define liten(t) ((65<=t&&t<=93)?t+32:t) #define sann 1 #define falsk 0 #define ETT14 1<<14 char ord[LANGD]; int tabell[STORLEK]; char lexf_namn[20],ordf_namn[20]; FILE *lexf, *ordf; long pow2[PTAL][LANGD]; /* NP, NW */ long p[] = { 319993, 319981, 319967, 319927, 319919, 319849, 319831, 319829, 319819, 319817, 319811}; main() { initiera(); oppna_filer(); while( tagord(ord) ) { printf("%s\n",ord); lagra(ord); } skrivut(tabell,lexf); } int tagord(ord) char ord[]; { char t; int i; int mer; i=0; mer = sann; while(mer) { t = getc(ordf); while(!bokstav(t) && t != EOF) if(t == '\n') { if((t=getc(ordf)) == '.') while( (t=getc(ordf)) != '\n' && t != EOF) t = getc(ordf); } else t=getc(ordf); while(bokstav(t)){ ord[i] = t; /* ej liten */ i++; t = getc(ordf); } mer = (t=='-'); } ord[i] = 0; return(i>0); } initiera() { int i,j; long h; for(i=0; i>4] |= 1<<((int) h & 017); } } oppna_filer() { fprintf(stderr,"Ge namnet p} den existerande ordfilen:"); scanf("%s",ordf_namn); while((ordf = fopen(ordf_namn,"r")) == NULL) { fprintf(stderr,"Fel hos filen %s, ge nytt filnamn:",ordf_namn); scanf("%s",ordf_namn); } fprintf(stderr,"Ge namnet p} den lexikonfil som skall skapas:"); scanf("%s",lexf_namn); while((lexf = fopen(lexf_namn,"w")) == NULL) { fprintf(stderr,"Fel hos filen %s, ge nytt filnamn:",lexf_namn); scanf("%s",lexf_namn); } } skrivut(tabell,lexf) int tabell[]; FILE *lexf; { fwrite(tabell,(sizeof(int)),STORLEK,lexf); }