#include #include typedef struct trns { char zn; char *tr_zn; struct trns *sljed; } trans; void fatal(char *msg) { fprintf(stderr,msg); exit(EXIT_FAILURE); } trans *uc_tr(FILE *tabtr) { trans *glava,*temp; char znak; int brojac=-1; rewind(tabtr); glava=temp=NULL; for(;(znak=fgetc(tabtr))!=EOF;) { ++brojac; if (znak!='\n') { if (!brojac) //dakle radi se o znakovitom charu { if (glava==NULL) { //napravi glavu glava=temp=(trans *) malloc(sizeof(trans)); } else { //skoci na slijedecu strukturu temp->sljed=(trans *)malloc (sizeof(trans)); temp=temp->sljed; } //popuni temp->zn=znak; temp->tr_zn=NULL; } else //unutar znakovitog { temp->tr_zn=(char *)realloc(temp->tr_zn, sizeof(char)*brojac); temp->tr_zn[brojac-1]=znak; } } else { //terminiraj niz temp->tr_zn=(char *)realloc(temp->tr_zn, sizeof(char)*brojac); temp->tr_zn[brojac-1]=0; //resetiraj brojac brojac=-1; } } return (glava-temp)?glava:NULL; } void main(void) { trans *glava; FILE *drek; drek=fopen("tabtr1.afj","r"); glava=uc_tr(drek); for(;glava;printf("[%c] %s\n",glava->zn,glava->tr_zn),glava=glava->sljed); }