关于编写文件,再输出文件内容的程序题。

编写程序,功能为从键盘读入一组数据(10个整数),将其中的奇数和偶数分别保存在磁盘文件‘odd.c"和"even.c''中,并输出两个文件的内容。

通过大神的启发,本小白想出来啦!程序如下:

#include<stdio.h> 
#include<stdlib.h>
int main()
{   
    int i,n;
    int a[10];
    FILE *fo,*fe;

    if((fo=fopen("odd.c","wb"))==NULL)
    {printf("打开文件失败!!\n"); exit(1);}
    if((fe=fopen("even.c","wb"))==NULL)
    {printf("打开文件失败!!\n"); exit(1);}

    printf("请输入十个整数:\n");
    for(i=0;i<10;i++)
    {  
       scanf("%d",&a[i]);
       if(a[i]%2==0)
       fwrite(&a[i],sizeof(int),1,fe);
       else
       fwrite(&a[i],sizeof(int),1,fo); 
    } 
    fclose(fo);
    fclose(fe);

    if((fo=fopen("odd.c","rb"))==NULL)
    {printf("打开文件失败!!\n"); exit(1);}
    if((fe=fopen("even.c","rb"))==NULL)
    {printf("打开文件失败!!\n"); exit(1);}

    memset(a,0,10);
    printf("odd.c文件中的内容为:\n");
    n=fread(a,sizeof(int),10,fo);
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
    
    printf("\n");

    memset(a,0,10);
    printf("even.c文件中的内容为:\n");
    n=fread(a,sizeof(int),10,fe);
    for(i=0;i<n;i++)
        printf("%d ",a[i]);

    fclose(fo);
    fclose(fe);
    return 0;
}

另一种方法:

#include<stdio.h>
#include<stdlib.h>
int main()
{  int i;
   int a[10];
   char s[20];
   FILE *fo,*fe;
   if((fo=fopen("odd.c","w"))==NULL)
   {printf("打开文件失败!!\n");exit(1);}
   if((fe=fopen("even.c","w"))==NULL)
   {printf("打开文件失败!!\n");exit(1);}

   printf("请输入十个整数:\n");
   for(i=0;i<10;i++)
   { 
       scanf("%d",&a[i]);
       if(a[i]%2==0)
          fprintf(fe,"%d ",a[i]); 
            
       else
          fprintf(fo,"%d ",a[i]);
   }
   
   fclose(fo);
   fclose(fe);

   if((fo=fopen("odd.c","r"))==NULL)
   {printf("打开文件失败!!\n");exit(1);}
   if((fe=fopen("even.c","r"))==NULL)
   {printf("打开文件失败!!\n");exit(1);}

   fgets(s,20,fo);
   printf("odd.c文件中的内容为:\n%s\n",s);

   memset(s,0,20);
   fgets(s,20,fe);
   printf("even.c文件中的内容为:\n%s\n",s);
   
   fclose(fo);
   fclose(fe);
   return 0;
}