strcmp 질문드립니다!
반율하
질문 제목 : strcmp 사용법이 맞는거 같은데 원하는데로 출력이안되네요
다음과 같은 함수에서 if(strcmp(name,b_data[i].name) == 1 || strcmp(name1,b_data[i].name) == 1)
name 으로 입력받은 값과 name1 로 입력받은값이 malloc 으로 동적할당되있는 부분에 할당안되었을시 에러 출력하게 하는 구문인데요 정상적으로 할당되었는데 실행하면 --------------- 잘못된 계좌명입니다 . 다시한번 확인해 주세요 ------------- 문구도 출력되고 정상적으로 이체 되었습니다 이문구도 출력이되네요 ㅠㅠ어느부분이 문제일가요 ??? 도와주세요!
질문 내용 :
void transfer(const char* name,const char* name1,const int money)
{
int i;
for(i=0;i100;i++)
{
if(strcmp(name,b_data[i].name) == 1 || strcmp(name1,b_data[i].name) == 1)
{
printf(\n --------------- 잘못된 계좌명입니다 . 다시한번 확인해 주세요 -------------\n);
Sleep(1500);
break;
}
else if(strcmp(name,b_data[i].name) == 0)
{
if((b_data[i].point-money)=0)
{
b_data[i].point -=money;
}
else if((b_data[i].point-money)0 ){
printf(\n ------------- error : 금액 을 잘못 입력하셨습니다. -------------\n);
Sleep(1500);
return;
break;
}
}
}
계좌가 없을시 나는 오류도 출력하고싶을떄 다음과 같이 선언하면 원하는결과로 출력이안되네요 null 값과 비교하여 하면 계좌없을시 에러가 출력되지않나요???
/*for(i=0;icounter;i++)
{
if(b_data[i].name==NULL || b_data[i].name1==NULL)
{
//b_data[i].point +=money;
printf(\n 계좌가 없는 계좌입니다 \n);
Sleep(1500);
return;
break;
}
}
*/
for(i=0;icounter;i++)
{
if(strcmp(name1,b_data[i].name)==0)
{
b_data[i].point +=money;
printf(\n 정상적으로 이체 되었습니다 \n);
Sleep(1500);
return;
break;
}
}
//return;
}
form style=MARGIN: 0px name=tagForm onsubmit=javascript:oCafeTagRead.updateArticleTag() method=post /form=========================================================== 수정한다음입니다int check(const char* name)
{
for(i=0;i100;i++)
{
if(strcmp(name,b_data[i].name)==0)
{
return i;
}
}
return -1;}void transfer(const char* name,const char* name1,const int money)
{
int i=check(name);
int j=check(name1);if(i==-1)
printf( 출금하시고자하는 계좌명이 없거나 잘못 입력하셨습니다 다시한번 확인해주세요 \n);
else
{
if((b_data[i].point-money)=0)
{
b_data[i].point -=money;
}
else if((b_data[i].point-money)0 ){
printf(\n ------------- error : 금액 을 잘못 입력하셨습니다. -------------\n);
Sleep(1500);
return;
}
}
if(j==-1)
printf(이체계좌명이 없거나 잘못 입력하셨습니다 다시한번 확인해주세요 \n);
for(i=0;icounter;i++)
{
if(strcmp(name,b_data[i].name)==0)
{
if(strcmp(name1,b_data[i].name)==0)
{
b_data[i].point +=money;
printf(\n 정상적으로 이체 되었습니다 \n);
Sleep(1500);
return;
break;
}
}
}
//return;
}
-
베레기 2023-04-19
수다님 감사합니다
이부분이 계좌이체 를 구현한부분인데 처음 출금하고자하는 계좌 name 과
이체시키고자하는 계좌 name1 입니다
b_data[i].name 이 처음 계좌생성이란 함수에서 계좌를 생성하여 생성된 모든 계좌들이 들어가있는곳인데요
이곳에 생성되지 않은 계좌에서 계좌이체를 하려고할떄 에러가 발생하게하는 소스를 구현하려고한소스입니다
if 문과 할당하는 부분이 좀 복잡한거같아서 계속 시도해보는데도 답이 안나와 이렇게 도움요청드립니 -
티나 2023-04-19
질문이 무엇인지 잘 모르겠네요.
동적할당이 되어있는 부분에 할당이 안되어있다는 건 할당이 됬다는 건가요 안됬다는 건가요?
위에 말씀하신 함수는 단지 name과 b_data[i].name의 대소구분을 한 것으로밖에는 안보입니다.
다른 경우를 보려면 == 1이 아니라 != 0로 보면 되겠죠.
그리고 두번째로 초기에 b_data[i].name을 null로 초기화시켜줘야 계좌가 있고 없고의 판단이 가능할 겁니다.
int a;라고 했을 때 a에 무슨값이 있는지