DBILITY

C 초기화의 중요성? 본문

C

C 초기화의 중요성?

DBILITY 2019. 6. 14. 18:02
반응형

딸아이의 질문내용에 답변을 작성한 것.

비밀번호를 4자리 입력받되 입력자리는 *(asterisk)처리하고, 입력값을 "1234"와 비교하라...

이거야 원...어렵네..

char배열의 초기화없이 코딩한 결과 비교값이 다를 수 밖에....

문자배열의 마지막에 \0(null)이 들어가야 하니 크기도 +1해야 하는 것..

내가 너무 오래 했나..이런걸 공부한 게 언제던가..

auto gc인 c#,java를 사용하다 보면 c언어는 정말 어렵게 느껴진다.

 

#define _CRT_NONSTDC_NO_WARNINGS //비표준함수 사용시 vs2015이후
#include <stdio.h>
#include <string.h>
#include <conio.h>

void main(void) {

	char code[5];// = { 0 };
	code[4] = '\0';

	printf("비밀번호를 입력하세요 : ");
	for (int i = 0; i < sizeof(code)-1; i++)
	{
		code[i] = _getch(); // 입력 buffer 저장 없이 변수에 즉시입력
		_putch('*'); // 출력buffer 저장 없이 출력

	}
	
	printf("\n");
	printf("allocated memory size : %d, %d\n", sizeof(code), sizeof("1234"));
	printf("string size : %d, %d\n", strlen(code),strlen("1234"));

	if (!strcmp(code, "1234")) { // strcmp  ascii비교 같으면 0 크면 1 작으면 -1
		printf("matched\n");
	}
	else {
		printf("not matched\n");
	}

}

 

반응형

'C' 카테고리의 다른 글

C console program example  (0) 2019.06.05
GetKeyState  (0) 2019.01.04
WIN32 윈도우 생성 및 메시지처리 이해  (0) 2019.01.04
CMainFrame 가운데 정렬  (0) 2019.01.02
주요 Message  (0) 2018.02.13
Comments