C과제 ?된 곳 채워넣기
unsigned char StringToNum(char *name)
{
int loop_temp = strlen(name);
while (1)
{
/* ??????? */
}
loop_temp = 0;
while (1) //
구조체의
끝에
도달하면
종료
{
/* ?????????????? */
}
return (*(GROUP + loop_temp)).f_num;
//
일치하는
단어와
대응되는
숫자를
반환
//
일치하는
단어가
없으면 0
반환
}
* 내용중에 ? 빠진부분을 검토해본결과
첫번째 while문에서는 소문자를 대문자로 대문자는 그냥 통과하는 식을 넣으면 되고
두번째 while문에서는 구조체와 비교하여 비슷한 단어가 발견되면 그 반환값을 리턴하도록 하면 된다고 생각하여 아래와 같이 작성하여 보았습니다
unsigned char StringToNum(char *name)
{
int loop_temp = strlen(name);
/*
소문자 ->
대문자
변환 */
while (1)
{
--loop_temp;
if('a'<= name[loop_temp]&&name[loop_temp] <= 'z')
{
name[loop_temp] = name[loop_temp] - 32;
}
if(0==loop_temp)
{
break;
}
}
loop_temp = 0;
/*
명령어에
대응하는 hex
값
반환 */
while (1) //
구조체의
끝에
도달하면
종료
{
if(0 == strcmp(GROUP[loop_temp].name,name))
//strncmp
로
할경우
한자만
입력해도
반응을
하게
됩니다 mz md
경우
잘
적용이
않되는
문제가
발생하여 strcmp
로
처리해
주었습니다
{
break;
}
loop_temp++;
if(loop_temp == 13)
{
break;
}
}
// return (*(GROUP + loop_temp)).f_num;
아래와
같은뜻
return GROUP[loop_temp].f_num;
//
일치하는
단어와
대응되는
숫자를
반환
//
일치하는
단어가
없으면 0
반환
}
switch문을 활용하여 반환된 값을 선택하여 출력하도록
switch(out)
{
case 0 :
CDFunction();
break;
case 6 :
printf("MC\n");
break;
case 1 :
printf("MD\n");
break;
case 7 :
printf("code\n");
break;
case 8 :
printf("data\n");
break;
}
몇 가지를 테스트 해보았습니다 정상적으로 출력하는 것을 확인 할 수 있었습니다
API
win 32 console = int main
win32 app = WinMain
첫번째 예제에 정의 되어 있는 파일
-WinMain, WndProc
윈도우즈를 만드는 과정
WndClass정의 |
ò
RegisterClass |
ò
CreateWindow |
ò
ShowWindow |
ò
메시지루프 |
정의 -> 클래스를 등록 -> 메모리상의 윈도우 생성 -> 윈도우 화면에 출력 -> 메시지 루프
WNDCLASS
: window 클래스 관련 구조체 ->이부분을 이용하여 WndClass정의
메시지루프
: 사용자가 보내는 메세지
WndProc
:윈도우의 메시지 처리 함수를 지정하는데 메시지루프에서 보낸 메세지를 처리하는 곳
예제 + 주석달기
#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst; //
프로그램의
인스턴스
핸들
LPCTSTR lpszClass = TEXT("First");
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevlnstance, LPSTR lpszCmdParam, int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst = hInstance; //
이
윈도우
클래스를
등록하는
프로그램
번호
/* 1. WndClass
정의 */
WndClass.cbClsExtra= 0; //
예약영역을
사용하지
않음
WndClass.cbWndExtra = 0; //
예약영역을
사용하지
않음
WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //
윈도우의
배경색
지정
WndClass.hCursor = LoadCursor(NULL,IDC_ARROW); //
마우스
지정
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //
아이콘
지정
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName=lpszClass; //
윈도우
클래스의
이름을
문자열로
정의
WndClass.lpszMenuName=NULL; //
사용할
매뉴를
지정 (NULL =
사용하지
않음)
WndClass.style=CS_HREDRAW|CS_VREDRAW; //
윈도우의
스타일을
정의
/* 2. Class
등록 */
RegisterClass(&WndClass);
/* 3.
메로리상에
윈도우
생성 */
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
/* 4.
윈도우의
상의
화면
출력 */
ShowWindow(hWnd,nCmdShow);
/* 5.
메시지루프 */
while(GetMessage(&Message,NULL,0,0)){
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return(int)Message.wParam;
}
/*
메시지루프에서
메시지를
받아서
처리 */
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage){
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
'Daily Report' 카테고리의 다른 글
110928 Protocol mac 출력,ethernet구조체/ API 컨트롤간의 통신 (0) | 2011.09.28 |
---|---|
110927 protocol packet capture / api 대화상자 (0) | 2011.09.27 |
110808 Java gui swing 기본 (0) | 2011.08.08 |
110727 Java String 클래스 (0) | 2011.07.27 |
110725 일일보고서 java 객체지향의 구조 및 장점 (0) | 2011.07.25 |