カンマ区切りデータを読み込むことをしています

データには抜けがある事があるのですが、
(入力データの例)
10,30,20
10,20,30
,20,
,30,20
10,,20
・・・

このデータを以下のようにsscanfで一行づつ読み込んでデータを取り込みたいのですが。
int x1, x2, x3;
char line[32];
sscanf(line,"%d,%d,%d%[^\n]",
&x1, &x2, &x3);
if(x1 == NULL) x1 = 0;
if(x2 == NULL) x2 = 0;
if(x3 == NULL) x3 = 0;
などとしたいのですが、
先頭データに抜けがある場合などに、抜けがないデータも含めてx1,x2,x3すべてNULLになってしまいます。(例えば例の3行目)

多分、%d指定で読み出すべきところに値が無いことが原因かなとは思いますが、回避策がわかりません。
何か回避方法ありますか?