Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Eclipse
- window
- MSSQL
- SQL
- Express
- react
- table
- Kotlin
- Sqoop
- mybatis
- Python
- es6
- GIT
- Android
- hadoop
- Spring
- SSL
- JavaScript
- xPlatform
- SPC
- 보조정렬
- IntelliJ
- vaadin
- R
- plugin
- NPM
- 공정능력
- mapreduce
- tomcat
- Java
Archives
- Today
- Total
DBILITY
C 초기화의 중요성? 본문
반응형
딸아이의 질문내용에 답변을 작성한 것.
비밀번호를 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