ip를 비교해서 리턴값을 받고싶은데 비교가 되지 않네요....

cccc2002의 이미지

비교를 어떻게 해야하나요...

#include
int ipcompare(char *);
int num;
int main()
{
        num =ipacompare("192.168.0.40");
        printf("%d",num);
        return 0;
}
int ipcompare(char *buf)
{
        int i;
        (char*)client_info[0].sin_addr.s_addr="192.168.0.22";
        (char*)client_info[1].sin_addr.s_addr="192.168.0.33";
        (char*)client_info[2].sin_addr.s_addr="192.168.0.44";
        (char*)client_info[3].sin_addr.s_addr="192.168.0.40";
        for(i=0;i<4;i++)
        if(*buf==(char*)client_info[i].sin_addr.s_addr)
                return i;
}
ifyou의 이미지

두가지 실수를 했습니다.

첫째, 문자열 비교는 '=='로 비교 할 수 없습니다. 최소한 c에서는요..

strcpy()와 같은 함수를 사용해야 합니다.

cccc2002 wrote:
비교를 어떻게 해야하나요...

        if(*buf==(char*)client_info[i].sin_addr.s_addr)
 

두번째, s_addr은 type입니다. 아마 long type일텐데, string을
대입했지요.

cccc2002 wrote:
비교를 어떻게 해야하나요...
        (char*)client_info[0].sin_addr.s_addr="192.168.0.22";
}

inet_addr()와 같은 함수를 사용해야 합니다.

          (char*)client_info[0].sin_addr.s_addr=inet_addr"192.168.0.22");
ifyou의 이미지

급하게 다하 보니 좀 빠트렸네요..

#include
int ipcompare(char *);
int num;
int main()
{
        num =ipacompare("192.168.0.40");
        printf("%d",num);
        return 0;
}
int ipcompare(char *buf)
{
        int i;
        client_info[0].sin_addr.s_addr=inet_addr("192.168.0.22");
             ................

        for(i=0;i<4;i++)
        if(inet_addr(buf)==(char*)client_info[i].sin_addr.s_addr)
                return i;
}

요렇게 할 수 있겠지요. 이것이 정답은 아닙니다. 나름대로 구현 할 수도 있으니까..

또, 잘못한 것 중하나고, 문자열 대입입니다. 비교와 마찬가지로 '='를 사용

할 수 없습니다. c에서는요.. strcpy()같은 놈 사용해야 합니다.

참, 비교할때는 strcmp()입니다. 요즘 넘 바쁘다 보니 실수를.. ^^;

cccc2002의 이미지

이분분에서 warning: comparison between pointer and integer
이런 에러가뜨네요..

Quote:

if(inet_addr(buf)==(char*)client_info[i].sin_addr.s_addr
[/code]
cccc2002의 이미지

이분분에서 warning: comparison between pointer and integer
이런 에러가뜨네요..

Quote:

if(inet_addr(buf)==(char*)client_info[i].sin_addr.s_addr
cccc2002의 이미지

아래부분에서

Quote:
if(inet_addr(buf)==(char*)client_info[i].sin_addr.s_addr

이부분을 제거햇습니다.
ㅎㅎ.