default:break;
}
}
void makefile(void)
{char *s;
int num_str=0,oftemp,rep;
if((out=fopen("errors.txt","w"))==NULL)
{printf("\n ОШИБКА!!! ФАЙЛ С ТАКИМ ИМЕНЕМ НЕ СУЩЕСТВУЕТ!!!");
exit(-1);
}
if((in=fopen(filename,"r"))==NULL)
{printf("\n ОШИБКА!!! ФАЙЛ НЕЛЬЗЯ ОТКРЫТЬ ДЛЯ ЗАПИСИ!!!");
exit(-1);
}
while(num_str++,fgets(s,80,in)!=NULL)
{fputs("\---------------------------------------------------------\",out);
fputc('\n',out);
fputs(s,out);
fputc('\n',out);
rep=strlen(s);
s[rep-1]='\0';
strcpy(cordinat[num_str],s);
if((oftemp=mistake[num_str][0])==END)
{fputs(type_mis[0],out);
fputc('\n',out);
}
else
{for(int k=0;mistake[num_str][k]!=END;k++)
{oftemp=mistake[num_str][k];
fputs(type_mis[oftemp],out);
fputc('\n',out);
}
}
}
fputs("\---------------------------------------------------------\",out);
fputc('\n',out);
fcloseall();
}
// MENU
int MENU(char *s)
{int dy,n;
dy=line-1;
textbackground(WHITE);
textcolor(YELLOW);
window(1,1,80,25);
clrscr();
gotoxy(2,1);
cprintf(" SDenis\n ");
gotoxy(2,2);
cputs(s);
gotoxy(2,3);
cprintf("Используйте курсор вверх/вниз для выбора просматриваемой строки.\n");
gotoxy(2,4);
cprintf("<ENTER> - для просмотра ошибок в строке(строка выделяется). \n");
gotoxy(2,5);
cprintf("<ESC> - выход.\n");
gotoxy(2,6);
textbackground(WHITE);
textcolor(RED);
cprintf("******************** ОШИБКИ В СТРОКАХ *************************\n");
textbackground(WHITE);
textcolor(YELLOW);
gotoxy(2,19);
cprintf("******************* СТРОКИ ВАШЕГО ФАЙЛА ****************************\n");
window(X1,Y1,X2,Y2);
textcolor(BLACK);
viewwin(0,YWINDOW);
n = 0;
int Y=1;
while(1)
{char c;
gotoxy(1,Y);
textbackground(GREEN);
cprintf("%s",cordinat[n]);
textbackground(WHITE);
c=(c=getch())==0?c=getch():c;
gotoxy(1,Y);
cprintf("%s",cordinat[n]);
switch (c)
{case EXIT:
return(-1);
case '\r': /*enter*/
window(2,7,80,18);
clrscr();
putmistake(n);
window(X1,Y1,X2,Y2);
break;
case UP:
if (Y==1) viewwin(n>0?n-1:n,YWINDOW);
else Y--;
if(n>0) n--;
break;
case DOWN:
if(Y==YWINDOW) viewwin((n==dy?n:n+1)-YWINDOW+1,YWINDOW);
else Y++;
if(n+1==dy)
{n=0;
Y=1;
viewwin(n,YWINDOW);
}
else n++;
break;
}
}
}
void viewwin(int num,int numline)
{clrscr();
for(int a=0;a<numline;a++)
{gotoxy(1,a+1);
cprintf("%s",cordinat[num++]);
}
}
void putmistake(int n)
{int offtemp,x=1,y=1;
if((offtemp=mistake[n][0])==END)
{cprintf("%s",type_mis[0]);
}
else
{for(int k=0;mistake[n][k]!=END;k++)
{offtemp=mistake[n][k];
if(offtemp==13) cprintf("%s\n",type_mis[offtemp]);
else
{cprintf("%d.%s\n",k+1,type_mis[offtemp]);
x++;
y++;
gotoxy(x,y);
}
}
}
}
Литература.
1. Курс лекций по системному программированию.
2. Герберт Шилдт «C для профессиональных программистов».
3. В.Н. Лебедев «Введение в системы программирования»