c语言文件类问题,编写程序读取并写两个文件

编写一个程序,读取一个包含数字列表的文件,然后写入两个文件,一个文件中所有数字都可以被三整除,另一个文件中包含所有其他数字。
麻烦写一下代码。写半天一直报错就把自己写的删了

fopen打开文件,fgets逐行读取,转换为整数后,判断是否3的倍数,分别写入两个文件

#include <stdio.h>
int main(int args,char *argv[])
{
    FILE *fp  = NULL;
    FILE *fp1 = NULL;
    FILE *fp2 = NULL;
    int d=0;
    char buf[50];
    if(args < 4)
        return 0;
    fp = fopen(argv[1],"r");
    fp1 = fopen(argv[2],"w");
    fp2 = fopen(argv[3],"w");
    if(fp == NULL || fp1 == NULL || fp2==NULL)
        return 0;
    while(fgets(buf,50,fp) != NULL)
    {
          fscanf(fp,"%d",&d);
          if(d%3==0)
              fprintf(fp1,"%d\n",d);
          else
              fprintf(fp2,"%d\n",d);
    }
    fclose(fp);
    fclose(fp1);
    fclose(fp2);
    return 0;
}