首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于文件操作的有关问题

2012-04-03 
关于文件操作的问题#include stdio.h#include string.h#includeconio.hstructstudent{intidfloatsc

关于文件操作的问题
#include <stdio.h>
#include <string.h>
#include   <conio.h>

struct   student
{
int   id;
float   score[3];
float   sumscore;
}stu[100];

int   d=0;

void   input();
void   sum();
void   a();
void   b();

void   main()
{
        int   d;
        FILE   *fp3;
fp3=fopen( "C:\\学生.txt ", "r+ ");  
fprintf(fp3, "学号|语文     |数学     |英语     \n ");  
        while   (1)
{

printf( "1.输入:\n2.计算:\n3.排序:\n4.查看:\n5.退出 ");
printf( "\n\n请选择: ");
scanf( "%d ",&d);
if(d==1)
{
input();
}
else   if(d==2)
{
sum();
}
else   if(d==3)
{
a();
}
else   if(d==4)
{
b();
}
else
{
exit(1);
}
}
}

void   input()
{
char   c;
FILE*   fp1;
fp1=fopen( "C:\\学生.txt ", "r+ ");  
fprintf(fp1, "学号|语文     |数学     |英语     \n ");
printf( "您输入的信息,将保存到C盘的根目下的一个文本文件中。\n ");
for(int   i=0;i <100;i++)
{
printf( "请输入学号: ");
scanf( "%d ",&stu[i].id);
printf( "\n ");
printf( "请输入语   数   外   成绩: ");
scanf( "%f,%f,%f ",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
fprintf(fp1, "%4d|%.3f|%.3f|%.3f\n ",stu[i].id,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
printf( "\n ");
d++;
printf( "是否继续输入?(y/n): ");
scanf( "%c ",&c);
printf( "\n ");
if(c== 'n '||c== 'N ')
{
break;
}

}

}

void   sum()
{
float   sum;
for(int   i=0;i <d;i++)
{
sum=0;
for(int   j=0;j <3;j++)
{
sum+=stu[i].score[j];
}
stu[i].sumscore=sum;
printf( "%d   号学员的总成绩是:   %.2f\n ",i+1,stu[i].sumscore);
printf( "%d   号学员的平均成绩是:   %.2f\n ",i+1,stu[i].sumscore/3);
printf( "\n ");
}
}

void   a()
{
struct   student   temp;
for(int   i=1;i <=d;i++)
{
for(int   j=0;j <d-i;j++)
{
if(stu[j].sumscore <stu[j+1].sumscore)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
printf( "\n\n学号\t语文\t数学\t外语\t总分\n ");
printf( "===\t===\t===\t===\t===\t\n ");
for(int   i=0;i <d;i++)
{
printf( "%d\t ",stu[i].id);
for(int   j=0;j <3;j++)
{
printf( "%.2f\t ",stu[i].score[j]);
}
printf( "%.2f\t ",stu[i].sumscore);
printf( "\n ");
}
}

void   b()
{
FILE   *fp2;
char   ch;
fp2=fopen( "C:\\学生.txt ", "r+ ");
while   (!feof(fp2))
{
            fscanf(fp2, "%c ",&ch);
            printf( "%c ",ch);
}
}

这个程序,是我在一个论坛上的看到的一段代码。输入的信息被保存到在C:\的目录下的一个   学生.txt   这个文件中。我因为想还要保存以前的信息,所以输入的时候,是以   r+   方式打开的。但是,我这次输入了,就把上次的信息给替换了,不知道为什么。有人能告诉我其中的原因吗???



[解决办法]
r+ 不是追加,追加是 a

r+ 是以读写方式打开,你可以读,也可以写

写了当然 覆盖以前的拉

热点排行