Задание вообщем такое:
Построить таблицу используемых в программе на языке Си имен переменных с учетом блочной структуры программы. Найденные имена заменить мнемоническими именами. Учитывать типы данных созданные с помощью typedef.
Вроде что-то написано, но работает не совсем верно:
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
void main()
{char str1[20],str2[20];
char *p;
int i,k,n;
char *ch="=+/:;-! .,{}()";
char slova[20][20];
int sl=0;//schetchic slov
FILE *f;
int kol=0;
int nom=0;
int k1=0,k2=0,k3=0,k4=0,k5=0,k6=0,k7=0,k8=0,k9=0;
clrscr();
if ((f=fopen("transl.txt","r"))==NULL)
printf("OWIBKA OTKRITIYA FAYLA");
else {
do //nachalo cikla
{ strcpy(str1,"\0");
fscanf(f,"%s",&str1); //otkririe fayla
//razbienie na slova
p=strtok(str1,ch);
while (p)
{sl++;
strcpy(slova[sl],p);
p=strtok(NULL,ch);
}
}
while (!feof(f));//konec cikla
for (i=0;i<sl;i++)
{
if (strcmp(slova[i],"typedef")==0)
{
strcpy(slova[i],slova[i+2]);
}
}
printf("\n");
printf("\n|------------------------------------|\n");
printf("\n| Mnemonicheskoe ima | Tip dannih |\n");
printf("\n|------------------------------------|\n");
kol=0;
for (i=0;i<sl;i++)//poisk i vivod naydennih elementov
{
if ((strcmp(slova[i],"int")==0)||(strcmp(slova[i],"char")==0)||(strcmp(slova[i],"float")==0)||
(strcmp(slova[i],"const")==0)||(strcmp(slova[i],"char*")==0)||(strcmp(slova[i],slova[i+2])==0)||
(strcmp(slova[i],"double")==0)||(strcmp(slova[i],"FILE")==0))
{
if (strcmp(slova[i],"int")==0) { k1++; nom=1; if (k1==1) printf("|%20d|%15s|\n", nom, slova[i+1]);}
if (strcmp(slova[i],"char")==0){k2++; nom=2; if (k2==1) printf("|%20d|%15s|\n", nom, slova[i+1]); }
if (strcmp(slova[i],"float")==0) { k3++; nom=3; if (k3==1) printf("|%20d|%15s|\n", nom, slova[i+1]); }
if (strcmp(slova[i],"const")==0) { k4++; nom=4; if (k4==1) printf("|%20d|%15s|\n", nom, slova[i+1]);}
if (strcmp(slova[i],"char*")==0) {k6++; nom=5; if (k5==1) printf("|%20d|%15s|\n", nom, slova[i+1]);}
if (strcmp(slova[i],"const")==0) {k7++; nom=6; if (k6==1) printf("|%20d|%15s|\n", nom, slova[i+1]); }
if (strcmp(slova[i],"double")==0) {k8++; nom=7; if (k7==1) printf("|%20d|%15s|\n", nom, slova[i+1]);}
if (strcmp(slova[i],"FILE")==0) {k9++; nom=8; if (k8==1) printf("|%20d|%15s|\n", nom, slova[i+1]);}
if (strcmp(slova[i],slova[i+2])==0) {kol++; nom=8+kol; printf("|%20d|%15s|\n", nom, slova[i+1]);}
}
}
printf("\n|------------------------------------|\n");
}
fclose(f);
getch();
}
в файле лежит что-то такое
Код:
typedef struct fakult;
typedef char* string;
fakult *first, *cur;
int num,ter;
string str,iop;
char d[20];
int p;
printf("\nVvedite kolichestvo zapisey\n");
Очень нужна помощь, помогите пожалуста!!!)