C++ 구조체 코딩 질문합니다.


#include <stdio.h>
#include <conio.h> //
#include <string.h> 


typedef struct U_Information
{  //구조체 작성 
char Name [10];
char RRN [15];
char ID [16];
char Password [16];
char Phone [16];
char Address [40];
char Email [20];

 } UI;

char gfile_name[256]="User Data1.txt"; //파일이름 설정 

#define MAX_USER_DATA  100 //

UI g_user_data[MAX_USER_DATA]; //
int g_user_count; //

void ReadUserData() //저장된 유저정보 읽어오기 
{ 
  int index = 0; 
  FILE *p_file = fopen(gfile_name, "r"); 
  if(p_file != NULL){ 
  fread(&g_user_count, sizeof(int), 1, p_file); //
  for(index = 0; index < g_user_count; index++){ 
      fread(g_user_data + index, sizeof(UI), 1, p_file); //
  } 
  fclose(p_file); 
  } 
} 

void SaveUserData() //유저정보를 파일에 저장시키기 
{ 
  int index = 0; 
  FILE *p_file = fopen(gfile_name, "w"); 
  if(p_file != NULL){ 
  fwrite(&g_user_count, sizeof(int), 1, p_file); //
  for(index = 0; index < g_user_count; index++){ 
      fwrite(g_user_data + index, sizeof(UI), 1, p_file); //
  } 
      fclose(p_file);} } 

void GetPassword(char parm_password[]) //비밀번호 입력시 *로 보이게 하기 
{ 
  int input = 0, index = 0; 
  while(input != 13){ 
  input = getch(); //
  if(input == 13) parm_password[index] = 0; //
  else { 
      printf("*"); 
      parm_password[index++] = input; //
  } 
  } 
  printf("\n"); 
} 

void UserRegister() //유저 정보를 입력해 회원 아이디 만들기 
{ 
  printf("회원 등록하시려면 다음 정보를 입력하십시오.\n\n"); 

  printf("1. Input Name: "); 
  gets(g_user_data[g_user_count].Name);
  printf("2. Input RRN: "); 
  gets(g_user_data[g_user_count].RRN);
  printf("3. Input ID: "); 
  gets(g_user_data[g_user_count].ID);
  printf("4. Input Password: "); 
  gets(g_user_data[g_user_count].Password);
  printf("5. Input Phone Number: "); 
  gets(g_user_data[g_user_count].Phone);
  printf("6. Input Address: "); 
  gets(g_user_data[g_user_count].Address);
  printf("7. Input Email: "); 
  gets(g_user_data[g_user_count].Email);       

  g_user_count++; //

  printf("회원이 되셨습니다. 다시 로그인 해주십시오. \n\n"); 
} 


int main () //기본메일 (회원아이디 입력,비밀번호 입력) 
       //->성공시 성공 메세지,비밀번호 틀렸을 시 재입력 
      //-> 아이디가 틀린경우 OR 없는 경우 회원 등록을 할 것인지 물어보기 - YES시 회원정보 입력으로 넘어가기 NO시 다시입력하기 
{
 int index = 0, input = 0; 
  char id[16], password[16], success_login = 0; 

   ReadUserData(); //

  while(!success_login){ 
  printf("Input ID: "); 
  gets(id); 
  printf("Input Password: "); 
  GetPassword(password); 

  for(index = 0; index < g_user_count; index++){ //
      if(!strcmp(g_user_data[index].ID, id)){ //
          if(!strcmp(g_user_data[index].Password, password)){ //
              success_login = 1; //
              printf("로그인에 성공하셨습니다. \n\n"); 
          } else printf("암호가 옳바르게 입력되었는지 확인 하십시오. \n\n"); 
          break; 
      } 
  } 

  if(index == g_user_count){ //
      printf("ID가 등록이 되어있지 않습니다. 등록하시겠습니까? ( y / n ): "); 
      input = getche(); 
      printf("\n\n"); 
      if(input == 'y' || input == 'Y') UserRegister(); //
      else printf("다시 입력하십시오.\n\n"); 
  } 
  } 

  SaveUserData(); //
}

인터넷에서 카피한 내용입니다. 출처는http://www.tipssoft.com/bulletin/board.php?bo_table=old_bbs&wr_id=119 이곳에서 가져온거고요 조금 수정했습니다. 이해 안되는 명령어가 너무 많아서요ㅠㅠ 이해를 좀 하려고하는데 // 쳐진 부분에 설명 좀 붙혀주세요 간단하게ㅠㅠ부탁드립니다..

  • 2017년 12월 05일에 작성됨

  • 이해 안되는 것에 대해 질문을 하시기 바랍니다.     정영훈   2017.12.5 19:22     
  • 모든 문제에 대해서 그저 Cheat Sheet를 바라면 안돼요! 질문이 명확했으면!!..    dbwodlf3   2017.12.6 18:59     
조회수 68


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close