ip를 비교해서 리턴값을 받고싶은데 비교가 되지 않네요....
      글쓴이: cccc2002 / 작성시간: 목, 2003/08/28 - 10:51오전    
  
  비교를 어떻게 해야하나요...
#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;
}
Forums: 


Re: ip를 비교해서 리턴값을 받고싶은데 비교가 되지 않네요....
두가지 실수를 했습니다.
첫째, 문자열 비교는 '=='로 비교 할 수 없습니다. 최소한 c에서는요..
strcpy()와 같은 함수를 사용해야 합니다.
두번째, s_addr은 type입니다. 아마 long type일텐데, string을
대입했지요.
inet_addr()와 같은 함수를 사용해야 합니다.
(char*)client_info[0].sin_addr.s_addr=inet_addr"192.168.0.22");Re: ip를 비교해서 리턴값을 받고싶은데 비교가 되지 않네요....
급하게 다하 보니 좀 빠트렸네요..
#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()입니다. 요즘 넘 바쁘다 보니 실수를.. ^^;
그래도 에러가....ㅡ.ㅜ
이분분에서 warning: comparison between pointer and integer
이런 에러가뜨네요..
그래도 에러가....ㅡ.ㅜ
이분분에서 warning: comparison between pointer and integer
이런 에러가뜨네요..
아래부분에서[quote]if(inet_addr(buf)==([b]ch
아래부분에서
이부분을 제거햇습니다.
ㅎㅎ.
댓글 달기