[완]구조체 입력에 대한 error / 조언좀 부탁드려요
글쓴이: dj3218 / 작성시간: 월, 2018/01/29 - 1:04오후
c 다시 배우고 있는 초보입니다.
채팅 프로그램을 만들어보고 있습니다.
typedef struct {
int client_id;
char client_ip;
char client_cnttime;
}clientinfo;
clientinfo clntInfo[10];
int clnt_id
위쪽에 구조체 만들었고
중간에는 소켓 만들고 bind listen 이런거 나오다가
반복문 안에다가
clntInfo[clnt_id].client_id = clnt_id;
clntInfo[clnt_id].client_ip = (char*)inet_ntoa(clnt_addr.sin_addr);
이렇게 넣었습니다 id부분은 정상적으로 출력되지만 ip부분이 에러로 아래처럼 나오는데
어떻게 해결해야 할지 모르겠습니다. 지식공유좀 부탁드리겠습니다.
incompatible types when assigning to type 'char [50]' from type 'char *'
처음에는 char* 없이 해봤다가 다른크기 정수 캐스트 warning 떠서 수정하고 여러가지 넣어봤는데
도통 머리속에 떠오르질 않습니다...
clntInfo[].client_ip 에 ip를 문자로 넣고 싶습니다..
Forums:
https://wiki.kldp.org/wiki
https://wiki.kldp.org/wiki.php/DocbookSgml/Beginner_QA-KLDP#AEN70
https://kldp.org/node/158191
읽어보시면 답을 얻는 데 도움이 될 겁니다.
세벌 https://sebuls.blogspot.kr/
에러 메시지에 따르면 코드에서 client_ip 는
에러 메시지에 따르면 코드에서 client_ip 는 char 형이 아니라 char 의 배열 형으로 선언되어 있을 것 같은데요?
암튼 inet_ntoa 매뉴얼 페이지를 보시면 이게 반환하는 공간은 정적으로 할당된 공간이고 다음번에 이 함수가 (다른 인자를 전달받아) 호출되면 그 공간에 다른 문자열이 쓰여지게 됩니다. 그러니 호출 후에 결과를 복사해서 쓰셔야 합니다.
좋은 하루 되세요!
조언 감사합니다
조언을 보고 실행해보니 제가 원하던 대로 출력이 됩니다. 시간쪽도 이것과 비슷한 문제가 있었는데 이걸 토대로 해보겠습니다.
댓글 달기