C 프로그래밍

C언어 프로젝트 23.12.01

Nohsw 2023. 12. 1. 20:59

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