WAP to generate symbol table

#include<stdio.h>
#include<conio.h>
int isnum(int n) {
    if (n > 0 && n < 100)
        return 1;
    else
        return 0;
}
void main() {
    FILE * fp;
    char words[50][25], str[25], ch;
    char name[50][25];
    int size[50], add[50];
    int temp, ad = 1000;
    int i, j, w = 0, d = 0;
    fp = fopen("tsym.c", "r");
    clrscr();
    printf("\n File: tsym.c\n\n");
    if (fp != NULL) {
        do {
            j = 0;
            ch = 'd';
            strcpy(str, "");

            while (ch != ' ') {
                ch = getc(fp);
                printf("%c", ch);

                if (ch == EOF) break;

                str[j++] = ch;


                if (ch == ' ' || ch == '\n' || ch == '=' || ch == '[') {
                    j--;
                    break;
                }

                if (ch == ';' || ch == ',' || ch == ']') {
                    j--;
                    break;
                }

            }

            str[j] = '\0';


            if (j > 0)
                strcpy(words[w++], str);



            if (ch == ';')
                strcpy(words[w++], ";");

            j = 0;
        } while (ch != EOF);
    }



    for (i = 0; i < w; i++) {
        if (!strcmp(words[i], "int")) {
            i++;

            for (; strcmp(words[i], ";"); i++) {
                temp = atoi(words[i]);
                if (isnum(temp)) {
                    d--;
                    ad = ad - size[d];
                    size[d] = temp * 2;
                    ad = ad + size[d];
                    d++;
                } else {
                    strcpy(name[d], words[i]);
                    size[d] = 2;
                    add[d] = ad;
                    ad = ad + size[d];
                    d++;
                }
            }
        } else if (!strcmp(words[i], "char")) {
            i++;
            for (; strcmp(words[i], ";"); i++) {
                temp = atoi(words[i]);
                if (isnum(temp)) {
                    d--;
                    ad = ad - size[d];
                    size[d] = temp * 1;
                    ad = ad + size[d];
                    d++;
                } else {
                    strcpy(name[d], words[i]);
                    size[d] = 1;
                    add[d] = ad;
                    ad = ad + size[d];
                    d++;
                }
            }
        } else if (!strcmp(words[i], "float")) {
            i++;
            for (; strcmp(words[i], ";"); i++) {
                temp = atoi(words[i]);
                if (isnum(temp)) {
                    d--;
                    ad = ad - size[d];
                    size[d] = temp * 4;
                    ad = ad + size[d];
                    d++;
                } else {
                    strcpy(name[d], words[i]);
                    size[d] = 4;
                    add[d] = ad;
                    ad = ad + size[d];
                    d++;
                }
            }
        } else if (!strcmp(words[i], "double")) {
            i++;
            for (; strcmp(words[i], ";"); i++) {
                temp = atoi(words[i]);
                if (isnum(temp)) {
                    d--;
                    ad = ad - size[d];
                    size[d] = temp * 8;
                    ad = ad + size[d];
                    d++;
                } else {
                    strcpy(name[d], words[i]);
                    size[d] = 8;
                    add[d] = ad;
                    ad = ad + size[d];
                    d++;
                }
            }
        }
    }


    printf("\n\n\tSYMBOL TABLE:\n");
    printf("SYMBOL       SIZE      ADDRESS");
    for (i = 0; i < d; i++) {
        printf("\n%-10s", name[i]);
        printf("%-10d", size[i]);
        printf("%-10d", add[i]);
    }
    getch();
}