c语言如何用文件存储数据

#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include<iostream>
#include<string.h>

struct test
{

int num;
float s;
};

void main()
{
FILE *fp;
int i,j,k,bad,good;
double ts,sum=0,min,aver=0,tm[10];
struct test data[10],*p[10],*temp;
do {
sum=0;aver=0;
printf("Input 10 sorces------input 0(exit)\n");

for(i=0;i<10;i++)
{data[i].num=i+1;
scanf("%f",&data[i].s);
/*分数的输入部分*/
if(data[0].s==0) exit(0);
}

for(i=0;i<10;i++) tm[i]=data[i].s; for(i=0;i<10;i++) p[i]=&data[i];
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(tm[k]<tm[j])
k=j;
if(k!=i)
{ts=tm[i];tm[i]=tm[k];tm[k]=ts;
temp=p[i];p[i]=p[k];p[k]=temp;
} /*对输入分值进行排序*/

}
for(i=1;i<9;i++)
sum+=p[i]->s;
aver=sum/8;
/*计算平均值的部分*/

printf("\n-----------------\n");
printf("The aver is:%.1f\n",aver);
printf("-----------------\n");

(fabs(p[0]->s-aver)>fabs(p[9]->s-aver))?(bad=0):(bad=9); /*通过绝对差值判断与平均值相差最大的裁判*/
min=fabs(p[5]->s-aver);
good=5;
/*暂定第六个为最公平裁判*/

for(i=4;i>0;i--)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将前半部分与min比较*/

for(i=6;i<9;i++)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将后半部分与min比较*/

printf("The worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);
/*打印出最不公平裁判和其分数*/

printf("The best pingwei is %d and the sorce is %.1f\n",
p[good]->num,p[good]->s);
/*打印出最公平裁判和其分数*/

printf("\n----------------------------------\n");
printf("Next one:"); /*打印出下一位*/
}while(1);

}
请在以上程序中修改 使其10个分数和最终结果能存在一个文件中。

1、新建一个文件夹,并在文件夹中建立一个文档。

2、打开自己的C语言编辑器。

3、新建一个源文件。

4、写好C语言基本的框架。

5、将文件保存到新建的文件夹中。

6、保存的文件名一定要加.c,在点击保存。

7、输入下面的代码。

8、点击文档,输入的内容就出现在了文档中。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-28

具体操作步骤如下:

1、首先,创建一个新文件夹,在该文件夹中创建一个文档,如下图所示,然后进入下一步。

     

2、其次,双击C语言编辑器打开,如下图所示,然后进入下一步。

     

3、接着,在编辑器内创建一个新的源文件,如下图所示,然后进入下一步。

     

4、然后,编写C语言的基本框架,如下图所示,然后进入下一步。

     

5、随后,点击保存图标,将文件保存在新创建的文件夹中,如下图所示,然后进入下一步。

     

6、接着,文件名务必要添加.c,再单击“保存”按钮,如下图所示,然后进入下一步。

     

7、然后,键入以下代码,如下图所示,然后进入下一步。

     

8、最后,单击文档,输入的内容将出现在文档中,如下图所示。这样,问题就解决了。

     

本回答被网友采纳
第2个回答  2019-09-14

1、新建一个文件夹,并在文件夹中建立一个文档。

2、打开自己的C语言编辑器。

3、新建一个源文件。

4、写好C语言基本的框架。

5、将文件保存到新建的文件夹中。

6、保存的文件名一定要加.c,在点击保存。

7、输入下面的代码。

8、点击文档,输入的内容就出现在了文档中。

本回答被网友采纳
第3个回答  推荐于2017-09-02

使用文件操作函数即可用文件储存数据。

1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。
2、例程:

#include<stdio.h>
int a;
char b,c[100];
int main(){
    FILE * fp1 = fopen("input.txt", "r");//打开输入文件
    FILE * fp2 = fopen("output.txt", "w");//打开输出文件
    if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出
        puts("不能打开文件!");
        return 0;
    }
    fscanf(fp1,"%d",&a);//从输入文件读取一个整数
    b=fgetc(fp1);//从输入文件读取一个字符
    fgets(c,100,fp1);//从输入文件读取一行字符串
    
    printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数
    
    fputs(c,fp2);//向输出文件写入一行字符串
    fputc(b,fp2);//向输出文件写入一个字符
    fprintf(fp2,"%d",a);//向输出文件写入一个整数
    
    fclose(fp1);//关闭输入文件
    fclose(fp2);//关闭输出文件,相当于保存
    return 0;
}

第4个回答  推荐于2017-09-23
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct test
{
int num;
float s;
};
void main()
{
FILE *fp;
int i,j,k,bad,good;
double ts,sum=0,min,aver=0,tm[10];
struct test data[10],*p[10],*temp;
fp=fopen("./test.txt","w+");
do {
sum=0;aver=0;
printf("Input 10 sorces------input 0(exit)\n");
for(i=0;i<10;i++)
{
data[i].num=i+1;
scanf("%f",&data[i].s);
/*分数的输入部分*/
if(data[0].s==0)
{
fclose(fp);
exit(0);
}
}
for(i=0;i<10;i++) tm[i]=data[i].s; for(i=0;i<10;i++) p[i]=&data[i];
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(tm[k]<tm[j])
k=j;
if(k!=i)
{ts=tm[i];tm[i]=tm[k];tm[k]=ts;
temp=p[i];p[i]=p[k];p[k]=temp;
} /*对输入分值进行排序*/
}
for(i=1;i<9;i++)
sum+=p[i]->s;
aver=sum/8;
/*计算平均值的部分*/
printf("\n-----------------\n");
printf("The aver is:%.1f\n",aver);
printf("-----------------\n");
fprintf(fp,"\n-----------------\n");
fprintf(fp,"The aver is:%.1f\n",aver);
fprintf(fp,"-----------------\n");
(fabs(p[0]->s-aver)>fabs(p[9]->s-aver))?(bad=0):(bad=9); /*通过绝对差值判断与平均值相差最大的裁判*/
min=fabs(p[5]->s-aver);
good=5;
/*暂定第六个为最公平裁判*/
for(i=4;i>0;i--)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将前半部分与min比较*/
for(i=6;i<9;i++)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将后半部分与min比较*/
printf("The worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);
fprintf(fp,"The worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);
/*打印出最不公平裁判和其分数*/
printf("The best pingwei is %d and the sorce is %.1f\n",
p[good]->num,p[good]->s);
fprintf(fp,"The best pingwei is %d and the sorce is %.1f\n",
p[good]->num,p[good]->s);
/*打印出最公平裁判和其分数*/
printf("\n----------------------------------\n");
fprintf(fp,"\n----------------------------------\n");
printf("Next one:"); /*打印出下一位*/
}while(1);
}

输出到文件不难,在程序开始使用fopen打开一个文件,得到返回值fp,之后使用fprintf把想输出的内容输出到fp即可,在退出程序的时候使用fclose关闭fp。追问

能不能具体点 。。。

追答

都实现了还要怎么具体。。

本回答被提问者采纳
相似回答