로그인체크함수를 만들고있는데 회원가입 형태를 연결리스트 형태로 했어요 그런데 로그인체크 함수를 만들었는데 그게 잘안되서 어떻게 수정해야할까요?
void l_ch(char ID2,char PW2,struct regist1 *snode){ // *snode는 연결리스트 시작주소 ID2 PW2
struct regist1 *lnode = snode; //는 입력받는 아이디와 비밀번호
if (lnode->pNext != NULL){
if (lnode->pNext->ID == ID2){
if (lnode->pNext->PW == PW2){
list();
}
else
l_ch(ID2, PW2, lnode->pNext);
}
else{
l_ch(ID2, PW2, lnode->pNext);
}
l_ch(ID2,PW2,lnode->pNext);
}
else{
menu(NULL, NULL);
}
}
이것은 연결리스트 구조체에요
typedef struct regist1{
char ID[10];
char PW[15];
char e_mail[25];
struct regist1 *pNext;
}regist1;
뭔가 이것저것 많이 틀렸지만 일단 함수 인자로 전달되는 ID2 PW2는 char형인데 우리가 비교하려는 ID하고 PW값은 char의 배열이지요?
네 같은 char형태에요 그리고 어디가 틀렸나요?
ID2하고 PW2를 똑같이 char의 배열형으로 보내줘야 하지 않을까요?
재귀함수인데 인자를넣을때는 자료형 넣어줘야하나요?
그리고 배열 안에 있는 문자값은 ==연산자로 비교를 할 수 없기 때문에 #include <string.h>를 전처리 구문에 추가하신 다음에 if (lnode->pNext->ID == ID2) 이 부분을 if (strcmp(lnode -> pnext -> ID, ID2) == 0)이렇게 바꿔주시면 되겠습니다^^
음 그건 수정할게요
재귀함수인자에 자료형을 안 넣는다는게 무슨 뜻인가요?
아이디하고 패스워드는 문자열로 입력을 받으실텐데 char ID2나 char PW2는 문자를 한 글자밖에 받을 수 없겠지요?
뭐라고해야하나 그냥 함수에 인자넣을떄는 자료형을 써야되냐는 말이에요
아 그럼 배열로 넘겨줘야 되는군요
아 함수를 호출할 때에는 자료형을 쓰지 않는 것이 맞습니다^^ 그리고 함수에는 배열을 넘기는 것이 불가능하기 때문에 포인터를 사용해야 합니다!
아 그럼 제가 일단 해보겠습니다 감사합니다 (__) 꾸벅
화이팅^_^