계좌 만들면서 비밀번호 만들잖아 출금할때 비밀번호 맞으면 출금되게 하려고하는데 자꾸 비밀번호가 틀리다고하는데 왜그런지 아는사람 ㅠㅠ
class Account()
{
private:
int ID;
char *name;
int money;
char *password;
public:
Account(int myid, char *myname, int mymoney,char *pwd)
:ID(myid),money(mymoney)
{
int len = strlen(myname) + 1;
name = new char[len];
strcpy_s(name, strlen(myname)+1, myname);
int len2 = strlen(pwd) + 1;
password = new char[len2];
strcpy_s(password, strlen(pwd) + 1, pwd);
}
int GetAccID() // 계좌번호 불러오기
{
return ID;
}
char *GetAccPwd() // 비밀번호 확인 여기가 문제점
{
return password;
}
void Deposit(int moneys) //입금
{
money += moneys;
}
int Withdraw(int moneys)
{
if (money < moneys)
{
cout << "출금 급액이 더많음" << endl;
return 0;
}
money -= moneys; //내 돈을 불러와서 출금액을 빼고
return money; // 출금액을 뺸 내돈을 다시 내돈에 넣어줌
}
void showaccinfo()
{
cout << "계좌 ID :" << ID << endl;
cout << "이름 : " << name << endl;
cout << "잔액 : " << money << endl;
}
~Account()
{
delete[]name;
}
};
int counte = 0; //전역
Account *acc[100]; //전역
출금함수
///////////////////////////////////////////////////
void outputmoney()
{
int id, money;
char pwd[20];
cout << "ID 입력 :";
cin >> id;
for (int i = 0; i < counte; i++)
if (acc[i]->GetAccID() == id)
{
cout << "비밀번호 입력 :"; cin >> pwd;
if (acc[i]->GetAccPwd() == pwd)
{
cout << "ID 확인 돈을 입력해 주세요 : ";
cin >> money;
acc[i]->Withdraw(money);
cout << money << "원 출금완료" << endl;
}
else
{
cout << "비밀번호가 틀립니다" << endl;
}
return;
}
else
{
cout << "ID가 틀립니다" << endl;
return;
}
}
소스에서 필요한거만 넣었어 outputmoney 부분이랑 클레스부분에 빨간줄 친거만 봐줘
저렇게 짜고나서 id는 일단 맞아떨어지면 처리가 잘되는데
비밀번호가 맞아떨여져도 같다고 안하고 틀리다고 진행이안되...
비밀번호 1로 설정해도 안되고 문자열으로 abc해도 안되고..
클래스에서는 포인터로 했는데 밑에 출금부분에서는 포이터로 안해서 그래..?
포인터로 해보려하는데 잘안되서..누가 도움을 줘 ㅠㅠ 나도 잘하고싶어
그냥 = 쓰면 안댐 포인터 주소는 당연히 다름
배열의 이름은 배열첫 포인터값임
==으로 처리하게되면 클래스 변수 패스워드는 포인터 주소로 처리되고 함수에있는 패스워드 변수는 그냥 문자열값이 들어가서 ==이 성립안된다는거야 ?
그럼 해결방법이 뭐야 형 ㅠㅠ
문자열 비교 함수 strcmp를 써야함
그렇구나.. strcmp라는걸써야하구나 알아볼게 형 고마워
---해결완료 오늘도 컴갤 형님들의 도움을 받아 즐겁게 삽니다---
걍 std::string 쓰자..
ㄴ 나 질문자인데 스트링잘몰랑 - dc App