멍청한 c언어 초심자를 구원해주실 아량이 몹시 넓은 지식인분들을 찾습니다..ㅠ
일본어못해요
안녕하십니까?
c언어를 배운지 한달도 되지않은 초심자중 초심자입니다.
다름이 아니라 지천에 정보가 많고 배우려는 의지만 있다면 충분히 배워나갈 수 있음에도 염치불구하고 이곳에 질문을 올리는 이유는, 제가 생각한 프로그램이 뜻대로 작동하지 않아 무엇이 문제인지 고찰하고 해결하려고하기 위함입니다.
틀린것이 무엇인지 모르고 바로잡아내지 못한다면, 후에 제가 다른 프로그램을 잘 때에도 같은, 혹은 비슷한 실수를 저지를까 싶어 지식인분들께 자문을 구하고자 합니다.
우선 제가 만든 프로그램은 입력한 문자를 받아서 상하좌우로 움직이는 프로그램입니다.
#include stdio.h
#include windows.h
#include conio.h
#define X_MAX 50
#define Y_MAX 10void gotoxy(int x, int y);
void move_arrow_key(char chr, int *x1, int *y1, int x_b, int y_b);
int main(void)
{
char ch1;
char key;
char ch;
int x=10, y=5;
do
{
gotoxy(x,y);
key=getch();
//system(cls);
if(key==80,75,77,72)
{
move_arrow_key(key, &x, &y, X_MAX,Y_MAX);
}
else
{
ch1==key;
printf(%c,ch1);
}
}
while(key!=27);
return 0;
}
void move_arrow_key(char key, int *x1, int *y1, int x_b, int y_b)
{
switch(key)
{
case 80:
*y1=*y1+1;
if(*y1y_b) *y1=y_b;
break;
case 75:
*x1=*x1-1;
if(*x11) *x1=1;
break;
case 77:
*x1=*x1+1;
if(*x1x_b) *x1=x_b;
break;
case 72:
*y1=*y1-1;
if(*y11) *y1=1;
break;
default:
return;
}
}
void gotoxy(int x, int y)
{
COORD Pos = {x-1,y-1};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}
나름 배운 지식을 총 동원하여 머리를 짜내어 저렇게 만들었지만, 아쉽게도 제대로 작동하지 않내요.
문제는 굵게 칠해진 부분입니다.
실행결과, if문에서 방향키 4개 중 하나를 입력하면 move_arrow_key 함수로 이동하는것까진 되는걸 확인했습니다.
움직이기도 하구요.
하지만else문이 작동하질 않습니다.
방향키 4키를 제외한 다른 문자를 입력하면 화면에 그 문자가 printf로 출력이 되어야 하지만 되지가 않습니다.
아주 간단한 문제인것 같지만.. 제 머리론 도저히 어디가 틀린지 알수가 없어 고심끝에 질문 올립니다.
지식인분들 부디 초심자 구원하는샘 치고 도와주시기 바랍니다 ㅠㅠ
-
아리에스
if(key==80,75,77,72)
이부분을
if( key == 80 || key == 75 || key == 77 || key == 72 ) 로 바꿔보세요.
fi( key == 80 && key == 75 && key == 77 && key == 72 ) 인지 알수 없습니다.