void recor_inf(struct stu_inf S[MAX], int *count) {
int i, tmp, c=0; // cursor
gotoxy(2, 1); printf("Enter를 입력하면 해당 자료 수정, 자료 선택 상태에서 Esc를 입력하면 되돌아갑니다");
view(S, count);
gotoxy(0, 4); printf(">");
while(1) {
getch();
fflush(stdin);
if (getch() == 72) {
if (c == 0) break;
else {
gotoxy(0, 4+c); printf(" ");
c--;
gotoxy(0, 4+c); printf(">");
}
}
if (getch() == 80) {
if (c == *count-1) break;
else {
gotoxy(0, 4+c); printf(" ");
c++;
gotoxy(0, 4+c); printf(">");
}
}
if (getch() == 13) {
gotoxy(0, 4+c); printf(" ");
gotoxy(5, 4+c); printf(" ");
gotoxy(5, 4+c); tmp = S[c].grd; scanf("%d", &S[c].grd);
if (S[c].grd == 0) {
S[c].grd = tmp;
break;
}
gotoxy(10, 4+c); printf(" ");
gotoxy(10, 4+c); scanf("%d", &S[c].cls);
gotoxy(15, 4+c); printf(" ");
gotoxy(15, 4+c); scanf("%d", &S[c].num);
gotoxy(21, 4+c); printf(" ");
gotoxy(21, 4+c); scanf("%s", S[c].name);
gotoxy(31, 4+c); printf(" ");
gotoxy(31, 4+c); scanf("%d", &S[c].kk);
gotoxy(38, 4+c); printf(" ");
gotoxy(38, 4+c); scanf("%d", &S[c].mm);
gotoxy(45, 4+c); printf(" ");
gotoxy(45, 4+c); scanf("%d", &S[c].ee);
S[c].sum = S[c].kk + S[c].mm + S[c].ee; gotoxy(52, 4+c); printf("=", S[c].sum);
S[c].rank = 1;
for(i=c; i<0; i--) {
if (S[i].grd == S[c].grd) {
if (S[i].sum < S[c].sum) S[i].rank++;
else if (S[i].sum > S[c].sum) S[c].rank++;
}
}
gotoxy(0, 4+c); printf(">");
}
if (getch() == 27) break;
}
for(i=0; i<*count; i++) {
if (i+1<*count) {
if (S[i].grd > S[i+1].grd) swap(&S[i], &S[i+1]);
else if (S[i].grd == S[i+1].grd) {
if (S[i].sum < S[i+1].sum) {
S[i].rank++;
swap(&S[i], &S[i+1]);
}
else if (S[i].sum > S[i+1].sum) S[i+1].rank++;
}
}
}
system("cls");
}
딴건 문제없고 (최적화나... 밑에 정렬도 문제 있긴 한데 이건 나중에 혼자 가능할듯) 72가 위 80이 아래 13이 엔터 27이 Esc인데
1번만 누르면 절대 반응 업고 네다섯번 눌러야 그때 입력이 들어가는데 어떻게 해야 하나여...
getch 는 buffered io 가 아닌데 왠 fflush
코세 강좌 초급 마지막장 링크 테트리스 나 메뉴 키보드 입력 보렴 화살표는 2바이트 입력
저도 좀 의아했는데 아는 분이 stdin에 들어갔다 나온다고 설명해주시던
개솔임.