//データを構造体配列に取り込んでいく
while(fgets(buf,sizeof(buf),fin)>0){
p = buf;
field[0] = buf;
j = 1;
if(buf[strlen(buf)-1] == '\n'){
buf[strlen(buf)-1] = 0;
}
while(*p != 0){
if(*p == ','){
*p = 0;
field[j++] = p+1;
}
p++;
}

ここの流れ(挙動?)がよく分からないのですがどういう感じでよみこんでいってるんでしょうか?