c语言编程中“文件保存”功能这部分部分是怎么编程的?

void savefile()
{int j;
FILE *fp;
}执行时不对啊,该怎么改啊?

我做了一个学生证管理程序,楼主不防参考一下这部分内容#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 100
typedef struct
{int num;
char name[10];
char sex;
char addr[10];
float score[5];
float average;
float sum;
}STU;
int i=0;
STU stu[N]={0};
FILE *fp;
void openfile();
void savefile();
void editmenu();
void findmenu();
void sort();
void stat();
void add();
void dele();
void modify();
void look();
float aver(STU *);
void main()
{char choose;
do
{
system("cls");
printf("\n\n\n\n\n\n\n");
printf(" |◆╬┅┅╬◆ 学生证管理系统 ◆╬┅┅╬◆|\n");
printf(" |----------------------------------------|\n");
printf(" | 请选择输入设置 (0-9): |\n");
printf(" |----------------------------------------|\n");
printf(" | 1--打开 |\n");
printf(" | 2--保存 |\n");
printf(" | 3--编辑 |\n");
printf(" | 4--View find a student |\n");
printf(" | 5--Sort information |\n");
printf(" | 6--优秀学生 |\n");
printf(" | 0--退出 |\n");
printf(" |-------------------------------------- \n");
printf(" | |\n");
printf(" |作业优秀度:★★★★★ |\n");
printf(" |--------------------------------------|\n");
fflush(stdin);
scanf ("%c",&choose);
switch(choose)
{case '1':openfile();break;
case '2':savefile();break;
case '3':editmenu();break;
case '4':findmenu();break;
case '5':sort(); break;
case '6':stat(); break;
case '0': exit(0);
default :printf("Input error.Please again.");
}
}while(1); }
void editmenu()
{char choose;
do
{system("cls");
printf("\n\n\n\n\n\n\n\n\n\n");
printf(" |***********************************************|\n");
printf(" | Please input option(0-3): |\n");
printf(" |***********************************************|\n");
printf(" | 1---Add record |\n");
printf(" | 2---Dele record |\n");
printf(" | 3---Modify record |\n");
printf(" | 4---look add number |\n");
printf(" | 0---Return |\n");
printf(" |***********************************************|\n");

scanf(" %c",&choose);
switch (choose)
{
case'1':add();break;
case'2':dele();break;
case'3':modify();break;
case'4':look();break;
case'0':return;
default:printf("Input error.Please again.\n");
}
} while(1);
}
void add()
{char ch;
int m;
do
{printf("please input num:");
fflush(stdin);
scanf("%d",&stu[i].num);
fflush(stdin);
printf("please input name:");
scanf("%s",stu[i].name);
fflush(stdin);
printf("please input sex:");
scanf("%c",&stu[i].sex);
fflush(stdin);
printf("please input addr:");
scanf("%s",stu[i].addr);
fflush(stdin);
printf("please input score:");
scanf("%f%f%f%f%f",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3],&stu[i].score[4]);
fflush(stdin);
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]+stu[i].score[4];
printf("sum is %.2f\n",stu[i].sum);
stu[i].average=stu[i].sum/5;
printf("average is %.2f\n",stu[i].average);
i++;
printf("if you will continue please print y else print n:\n");
fflush(stdin);
scanf("%c",&ch);
}while (ch!='n'&&ch!='N');
printf("num name sex addr score1 score2 score3 score4 score5 average sum\n");fflush(stdin);
for (m=0;m<i;m++)
printf("%d %s %c %s %.2f %.2f %.2f %.2f %.2f %.2f %.2f\n",stu[m].num,stu[m].name,stu[m].sex,stu[m].addr,stu[m].score[0],stu[m].score[1],stu[m].score[2],stu[m].score[3],stu[m].score[4],stu[m].average,stu[m].sum);getch();
}
void look()
{

printf("you have add %d record",i);
getch();

}
void openfile()
{
if((fp=fopen("d:\\1.dat","r"))==NULL)
{
printf("cannot open infile\n");
return;
}

while (i<N)
{
fscanf(fp,"%d%s%c%s%f%f%f%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].sex,stu[i].addr,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3],&stu[i].score[4],&stu[i].average,&stu[i].sum);
printf("%d %s %c %s %-.2f %-.2f %-.2f %-.2f %-.2f %-.2f %-.2f",stu[i].num,stu[i].name,stu[i].sex,stu[i].addr,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].average,stu[i].sum);
i++;
}
}
void savefile()
{int j;
FILE * fp; }
void findmenu()
{
int n,m;
printf("please input the student number which you want to find:");
scanf("%d",&n);getchar();
for(m=0;m<i;m++)
{if(n==stu[m].num)
printf("num:%d name:%s sex:%c addr:%s score1:%.2f score2:%.2f score3:%.2f score4:%.2f score5:%.2f average:%.2f sum:%.2f\n",stu[m].num,stu[m].name,stu[m].sex,stu[m].addr,stu[m].score[0],stu[m].score[1],stu[m].score[2],stu[m].score[3],stu[m].score[4],stu[m].average,stu[m].sum);}
getch();
} void sort()
{ int j,m;char ch;
STU t;
printf("\naverage rank please print (a),sum rank please print (b):\n");
fflush(stdin);
scanf("%c",&ch);getchar();
if(ch=='a')
{ for (m=0;m<i-1;m++)
{
for(j=0;j<i-1;j++)
if(stu[j].average<stu[j+1].average)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}
printf("num name sex addr score1 score2 score3 score4 score5 average\n");
for(m=0;m<i;m++)
printf("%d %s %c %s %.2f %.2f %.2f %.2f %.2f %.2f\n",stu[m].num,stu[m].name,stu[m].sex,stu[m].addr,stu[m].score[0],stu[m].score[1],stu[m].score[2],stu[m].score[3],stu[m].score[4],stu[m].average);getchar();
}
if(ch=='b')
{for(m=0;m<i-1;m++)
{
for(j=m+1;j<i;j++)
if(stu[j-1].sum<stu[j].sum)
{
t=stu[j];
stu[j]=stu[j-1];
stu[j-1]=t;
}
}
printf("num name sex addr score1 score2 score3 score4 score5 sum\n");
for(m=0;m<i;m++)
printf("%d %s %c %s %.2f %.2f %.2f %.2f %.2f %.2f\n",stu[m].num,stu[m].name,stu[m].sex,stu[m].addr,stu[m].score[0],stu[m].score[1],stu[m].score[2],stu[m].score[3],stu[m].score[4],stu[m].sum);getchar();
}
}
void stat()
{
for(i=0;i<3;i++)
{
printf("num name sex addr score1 score2 score3 score4 score5 average sum\n");fflush(stdin);
printf("%d %s %c %s %-.2f %-.2f %-.2f %-.2f %-.2f %-.2f %-.2f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].addr,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].average,stu[i].sum);
}getchar();
}
void dele()
{int m,n;
printf("please input the student number which you want to dele:");
scanf("%d",&n);
for(m=0; m<i;m++ )
while(n==stu[m].num)
{

stu[m].num=stu[m+1].num;
strcpy(stu[m].name,stu[m+1].name);
stu[m].sex= stu[m+1].sex;
strcpy(stu[m].addr,stu[m+1].addr);
stu[m].score[0]=stu[m+1].score[0];
stu[m].score[1]=stu[m+1].score[1];
stu[m].score[2]=stu[m+1].score[2];
stu[m].score[3]=stu[m+1].score[3];
stu[m].score[4]=stu[m+1].score[4];
stu[m].average=stu[m+1].average;
stu[m].sum=stu[m+1].sum;

}
i=i-1;
}
void modify()
{ int n,m,j;
char ch;
printf("please input the student number which you want to modify:");
scanf("%d",&n);
for(m=0;m<i;m++)
{ if(n==stu[m].num)
{ printf("num:%d name:%s sex:%c addr:%s score1:%.2f score2:%.2f score3:%.2f score4:%.2f score5:%.2f average:%.2f sum:%.2f\n",stu[m].num,stu[m].name,stu[m].sex,stu[m].addr,stu[m].score[0],stu[m].score[1],stu[m].score[2],stu[m].score[3],stu[m].score[4],stu[m].average,stu[m].sum);

printf("please input (y/n):");
scanf(" ch=%c",&ch);
while(ch!='n'&&ch!='N')
{
printf("num:\n");
fflush(stdin);
scanf("%d",&stu[m].num);
fflush(stdin);
printf("name:\n");
fflush(stdin);
scanf("%s",stu[m].name);
printf("sex:\n");
fflush(stdin);
scanf("%c",&stu[m].sex);
printf("addr:\n");
fflush(stdin);
scanf("%s",stu[m].addr);
printf("input score1,score2,score3,score4,score5:\n");
for(j=0;j<5;j++)
scanf("%f",&stu[m].score[j]);
printf("average is :%.2f\n",aver(&stu[m]));

stu[m].sum=stu[m].score[0]+stu[m].score[1]+stu[m].score[2]+stu[m].score[3]+stu[m].score[4];
printf("sum is %.2f\n",stu[m].sum);fflush(stdin);
printf("if you will remodify please print [y] else print [n]:\n");
fflush(stdin);
scanf("%c",&ch);

}

}
}
}
float aver(STU *stu1)
{int j;float sum=0,average;
for(j=0;j<5;j++)
sum=sum+stu1->score[j];
average=sum/5;
return average;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-17
void savefile()
{

int j = 100;
FILE *fp;//只定义了个文件指定,并没有对文件指针进行操作
fp = fopen("Hello.txt","w+");//以写入形式打开文件
fputc(j,fp);//写入文件
fclose(fp);//关闭文件
}//供参考...
第2个回答  2013-09-17
#include "stdafx.h"
#include<stdio.h>
#include<string>
#include<fstream>
#include<iostream>
using namespace std;float uFunc[36];
float uFuncHelp[54];
float uFuncDouble[36];int _tmain(int argc, _TCHAR* argv[])
{
ofstream stermout("out0_24.txt");
ofstream stermout1("out25_36.txt"); ofstream outxx("All.txt");
int i;
float fAllnum = 0;
float fAllnum1= 0;
float fAllnum2 = 0;
float fchange = 0.00185;
float fchange2 = 0.00185;
uFuncDouble[0] = 0.045;

for(i=1;i<18;++i)
{
uFuncDouble[i]=uFuncDouble[i-1]-fchange;
}
for(i=18;i<35;++i)
{
uFuncDouble[i]=uFuncDouble[i-1]+fchange2;
} for(i=0;i<36;++i)
{
fAllnum+=uFuncDouble[i];
outxx<<fAllnum<<" ,"; //将数组里的元素 输出到TXT文本
}}}
相似回答