C언어로 회원가입, 로그인 프로그램을 만들어보던 중 회원가입에서 1차와 2차 비밀번호를 맞는지 확인하는 과정에서 비밀번호를 맞게 입력했을 때 실패가 출력되었고, 다르게 입력했을 때 성공으로 출력되었다.
이 부분에서 이상함을 느꼈고 정보를 찾아보니 #include <string.h>의 strcmp 함수를 이용하여야 문자열을 비교할 수 있다는 점을 알게되었고 비밀번호 비교하여 성공, 실패를 작성할 수 있게 되었다.
#include <stdio.h>
#include <string.h> //문자열 비교함수인 "strcmp"를 사용하기 위해 string.h 라이브러리를 사용.
enum loginProgram {
userCreate = 1, //회원가입
userLogin = 2 //로그인
};
struct userInfo { //struct를 이용하여 로그인 정보 저장
char userId[100];
char userPassword[100];
char userCheckPassword[100]; // 사용자가 입력한 비밀번호에 대해서 비밀번호를 한번 더 입력하여 비밀번호가 서로 일치하는지 확인하는 변수.
};
main() {
enum loginProgram login_Type; //사용자의 선택으로 로그인 프로그램 실행.
struct userInfo userCreateInfo;
char* UserId = &userCreateInfo.userId; //포인터를 이용하여 사용자의 값을 저장.
char* UserPassword = &userCreateInfo.userPassword;
char* UserCheckPassword = &userCreateInfo.userCheckPassword;
int i = 0; //반복문 탈출을 위해 사용.
do {
printf("로그인 프로그램\nBy.Nohsw");
printf("\n\n");
printf("[1. 회원가입]\n[2. 로그인]\n");
printf("입력: ");
scanf_s("%d", &login_Type); //사용자의 선택 값으로 switch 실행.
printf("\n\n");
int i = 0;
switch (login_Type) { //enum을 이용하여 다른 개발자도 코드에 대해 쉽게 파악할 수 있도록 case 작성.
case userCreate:
printf("회원가입 화면입니다.\n");
printf("회원가입 할 ID를 입력해주세요.\n");
printf("입력: ");
scanf_s("%s", UserId, sizeof(userCreateInfo.userId)); //아이디 입력
printf("비밀번호를 입력해주세요.\n");
printf("입력: ");
scanf_s("%s", UserPassword, sizeof(userCreateInfo.userPassword)); //1차 비밀번호 입력
printf("비밀번호를 한번 더 입력해주세요.\n");
printf("입력: ");
scanf_s("%s", UserCheckPassword, sizeof(userCreateInfo.userCheckPassword)); //2차 비밀번호 입력
printf("\n\n");
if (strcmp(UserPassword, UserCheckPassword) == 0) { //strcmp 함수 사용으로 1차와 2차 비밀번호 비교.
printf("회원가입 성공.\n");
printf("사용자의 아이디는 %s입니다.\n", UserId);
}
else {
printf("회원가입 실패.\n");
}
printf("\n\n");
break;
case userLogin:
printf("userLogin\n");
printf("%s %s %s", UserId, UserPassword, UserCheckPassword);
printf("\n\n");
break;
}
} while (i < 1);
}
회원가입 작성 시 enum을 작성한 이유는 switch에서 다른 사람도 쉽게 파악할 수 있도록 하기 위해 enum을 이용하여 작성하였고, 사용자의 회원가입 시 필요한 변수를 struct를 이용하여 입력하였다.
문자열 비교를 위해서는 string.h의 strcmp를 이용해야 한다는 점을 공부하였으며, 회원가입 후 종료되지 않도록 do while 반복문을 사용하였다.
다음 목표는 비밀번호 암호화 및 비밀번호 입력 시 다른 사람이 알지 못하게 *로 바꾸는 것을 목표로 하였고, 그 이후에는 로그인이 정상적으로 되도록 할 예정이다.
'C 프로그래밍' 카테고리의 다른 글
C 프로그래밍 우분투 시작 (2) | 2023.12.03 |
---|---|
C언어 프로젝트 23.12.03 (4) | 2023.12.03 |
C언어 프로젝트 23.12.02 (2) | 2023.12.02 |
C언어 프로젝트 23.12.01 (1) (5) | 2023.12.01 |
C언어 프로젝트 23.11.30 (0) | 2023.11.30 |