C言語なら俺に聞け! Part 〈57〉
■ このスレッドは過去ログ倉庫に格納されています
0267デフォルトの名無しさん
NGNGtypedef struct ___tag_ipaddr_t { /* IP アドレス */
unsigned char addr[IPADDR_SIZE];
unsigned char mask;
} ipaddr_t;
typedef enum ___tag_BOOL { /* 論理型 */
FALSE, TRUE
} BOOL;
/* buf は破壊されます */
BOOL str_to_ipaddr(char *buf, ipaddr_t *ip) {
const char mask_sep[] = "/"; /* マスクとアドレスのセパレータ */
const char ip_sep[] = "."; /* IP アドレスの桁のセパレータ */
char *ipstr;
const char *maskstr;
const char *token;
int i;
/* xxx.xxx.xxx.xxx/yyy の分離 */
if(ipstr = strtok(buf, mask_sep), ipstr == NULL)
return false;
if(maskstr = strtok(NULL, ""), maskstr == NULL)
return false;
ip->mask = atoi(maskstr);
/* aaa.bbb.ccc.ddd の分離 */
for(i = 0, token = strtok(ipstr, ip_sep);
i < IPADDR_SIZE;
++i, token = strtok(NULL, ip_sep)) {
if(token == NULL)
return FALSE;
ip->addr[i] = atoi(token);
}
return TRUE;
}
■ このスレッドは過去ログ倉庫に格納されています