char buf[]="192.168.0.1/24";
int ipaddr;
int subnetmask;

という状態で、bufにあるデータをipaddrとsubnetmaskへ分ける最も効率の
良い方法をアドバイスください。

私は、
int i;
char addr_tmp[20];
と追加して、
for(i=0; i<strlen(buf); i++)
if(buf[i] == '/')
buf[i] == 0x20;

として、スラッシュをスペースに変え、

sscanf(buf, "%s%d", adr_tmp, subnetmask);
inet_atonで、アドレスを数値に変えてます。

こんなんでいいでしょうか?
なんかスラッシュをスペースに変えてるところが無駄に思えるんですが。。