C语言中如何将一维数组的内容写入文件?

程序代码是这样的
#include "stdio.h"
int main()
{ FILE *fp;
int num[100];
int score[100];
int i=0;//i值不变
int j=0,k=0;//用来控制循环
int a=0,b=0,c=0,l=0;
int max=0; //用来计算最大值
lap:printf("请输入学生数目:\n");
scanf("%d",&i);
j=i;//用来保留i的值
for(k=0;k<j;k++)
{
printf("请输入第%d个学生的学号和分数,中间用空格隔开:\n",l+k+1);
scanf("%d %d",&num[l+k],&score[l+k]);
}
l=l+i;//计数器
i=0;
printf("输入完成!请选择您需要的功能:\n");
lbp:printf("1.求出最高成绩及其拥有者:\n");
printf("2.增加新的成绩:\n");
printf("3.退出\n");
printf("4.保存到文件 成绩.txt\n");
loop:scanf("%d",&k);
switch(k)
{
case 1:for(k=0;k<l;k++)
{
if(max<score[k])
{
max=score[k];

}

}
printf("最高分为%d\n",max);
for(k=0;k<l;k++)
{
if(max==score[k])
{
printf("最高分的同学的学号是:%d\n",num[k]);

}

}
printf("请问您是否还需要继续计算么?\n1.Yes\n2.No");
scanf("%d",&a);
if(a==1)
goto lbp;
;break;
case 2:goto lap;break;
case 3:break;
case 4:if((fp=fopen("成绩.txt","w+"))=NULL)
{printf("文件打开失败!\n");}
for(k=0;k<l;k++)
{fprintf(fp,"%d%d",num[k],score[k]);}
default:printf("输入错误,请重新输入:\n");
goto loop;break;
}

}

就是下面这个语句,我怎么用都写不进去
{fprintf(fp,"%d%d",num[k],score[k]);}
运行之后就变这个了

主要原因是 if((fp=fopen("成绩.txt","w+"))=NULL)这句

= 要改为==

=意味着 把 NULL赋值为fp因此  fp则永远为空了

改过的代码如下:(我添加的部分有注释)

#include <stdio.h> 
#include<stdlib.h>
int main()
{
    FILE *fp;
    int num[100];
    int score[100];
    int i = 0;//i值不变 
    int j = 0, k = 0;//用来控制循环 
    int a = 0, b = 0, c = 0, l = 0;
    int max = 0; //用来计算最大值 
lap:printf("请输入学生数目:\n");
    scanf("%d", &i);
    j = i;//用来保留i的值 
    for (k = 0; k < j; k++)
    {
        printf("请输入第%d个学生的学号和分数,中间用空格隔开:\n", l + k + 1);
        scanf("%d %d", &num[l + k], &score[l + k]);
    }
    l = l + i;//计数器 
    i = 0;
    printf("输入完成!请选择您需要的功能:\n");
lbp:printf("1.求出最高成绩及其拥有者:\n");
    printf("2.增加新的成绩:\n");
    printf("3.退出\n");
    printf("4.保存到文件 成绩.txt\n");
loop:scanf("%d", &k);
    switch (k)
    {
    case 1:for (k = 0; k < l; k++)
    {
        if (max < score[k])
        {
            max = score[k];

        }

    }
           printf("最高分为%d\n", max);
           for (k = 0; k < l; k++)
           {
               if (max == score[k])
               {
                   printf("最高分的同学的学号是:%d\n", num[k]);

               }

           }
           printf("请问您是否还需要继续计算么?\n1.Yes\n2.No");
           scanf("%d", &a);
           if (a == 1)
               goto lbp;
           ; break;
    case 2:goto lap; break;
    case 3:break;
    case 4:if ((fp = fopen("成绩.txt", "w+")) == NULL)//1. 回答者把 =  改为 ==
    {
        printf("文件打开失败!\n");
    }
           for (k = 0; k < l; k++)
           {
               fprintf(fp, "%d %d", num[k], score[k]);//2. 回答者加了一个空格
           }
           printf("文件保存成功!\n");//3. 回答者加
           break;//4. 回答者加
    default:printf("输入错误,请重新输入:\n");
        goto loop; break;
    }

    getchar();//5. 回答者加
    getchar();//6. 回答者加

}

运行结果:


望采纳~

温馨提示:答案为网友推荐,仅供参考
相似回答