도스에서 명령프롬프트는 현재위치>_ 커서가 무한으로 반복하게 된다.
그래서 무한반복을 위해 while문을 써주게 된다.
그리고 printf와scanf대신 저수준함수인 write와read함수를 써준다.
scanf는 길이 체크를 안하기 때문에 뻑이 난다. read는 사이즈를 체크하기때문에 뻑이 안난다.
는 iret는 NULL과 엔터키를 포함하고 있다. iret-1은 엔터자리에 NULL을 넣어서 엔터를 제외한다.
iret = strlen[buff]는 버퍼의 길이를 iret에 대입한다.
그래서 iret값이 0이 되면 반복문이 종료가된다. 즉, 명령에 엔터를 치게 되면 종료를 한다.
명령이 입력되면 이제 for문을 실행하게 되는데 buff와day[icnt]를 비교하여서 일치하게 되면 for문이 종료가 된다. 일치하지 않으면 for문을 다 수행하고 다시 while문을 수행한다.
buff와day가 일치하면 icnt와 같은값을 가진 열거형의 함수를 출력하게 된다.
※함수를 사용할때 잘못쓸수가 있는 fp[i]();에서 ()를 빼주고 fp[i]만 사용하게 되면 에러도 없고 컴파일도 잘되지만 아무것도 아니다. main()함수를 그냥 main써주는것과 같으니까 주의해야 될꺼 같다!!
int main()
{ int icnt; //발생하는 숫자를 받는 변수 int iret; //반환값을 처리할 변수 char Buff[10]; //입력한 문자를 저장할 배열 int temp; //문자열을 비교한 반환값을 받는 함수 while(1)
{
write(1,"요일 입력>",10); //모니터에 해당 문자열출력
iret = read(0, Buff,sizeof(Buff)); //read는 읽은 갯수를 반환
Buff[iret-1] = 0; //
iret = strlen(Buff); //Buff길이 확인 if(0 == iret) //Buff가 0인지를 확인
{ break;
}
글짜 하나만을 이용해서 요일찾기!! 비교함수를 strcmp대신 strncmp를 사용하였다.기존에 있던 요일 함수 fp와 day를 Message Map에 넣어 버렸다!!
[윈도우즈 API]
☆윈도우즈
-그래픽 기반 OS(GUI)
-멀티 태스킹 가능
-메시지 구동 시스템
-장치에 독립적이다.
-일관성이 있다.
-리소스가 분리되어 있다.
※윈도우즈API와 Win32API는 같은 말이다 Win32API는 (window 32bit API)이다.
◇API를 알아야하는 이유 1.운영체제를 이해하기 위해 2.어차피 알아야 하므로 -클래스 라이브러리는 API함수의 기반 위에 만들어지는 것이므로 API를 모르고는 클래스라이브러리를 이해하기 힘들다. 3.자유를 얻기 위해 -클래스 라이브러리나 비주얼 툴은 편리하지만 프로그래머를 일정한 틀 안에 가두어 버린다. API는 자유를 구속하지 않는다. 4.가장 자연스러운 학습 과정이므로
C→API→C++→MFC가 가장 이상적인 학습과정이다.
◇변수 명명법
-예를 들어 cbString이면 문자열의 바이트 수를 나타내는 정수형 변수라는 것을 알수 있다. 이런 변수 명명법을 헝가리식 명명법이라고도 한다. 함수의 원형을 보면 hWnd는 핸들이고 lpRect는 포인터이면 bErase는 진위형이라는 것을 금방 알수 있다.
◇윈도우즈 사용자 정의 데이터형
◇핸들에 대한 이해 -핸들이란 구체적인 어떤 대상에 붙여진 번호이며 문법적으로는 32비트(또는 64비트)의 정수값이다. ①핸들은 일단 정수값이며 대부분의 경우 32비트 값이다. 핸들을 사용하는 목적은 오로지 구분을 위한 것이므 로 핸들끼리는 중복이 되지 않아야한다. ②핸들은 운용체제가 발급하며 사용자는 쓰기만 한다. ③같은 종류의 핸들끼리는 절대로 중복된 값을 가지지 않는다. ④핸들은 정수형이므로 값을 가지겠지만 그 실제값이 무엇인지는 몰라도 상관없다.
◇유니코드 -유니 코드는 16비트의 단일한 값으로 지구상의 모든 문자를 표현할 수 있는 문자 코드체계이다.