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

大家看看小弟我这个C程序文件如何保存啊

2012-03-19 
大家看看我这个C程序文件怎么保存啊?我现在做课程设计,其它都差不多好了,就差怎么样把程序中输入的数据保

大家看看我这个C程序文件怎么保存啊?
我现在做课程设计,其它都差不多好了,就差怎么样把程序中输入的数据保存了,我们讲文件的时候这里是一带而过的,每次把输入的数据再调出来的时候就显示不出来,请大家帮帮忙。#include <stdio.h>
#include <string.h>
#define   SIZE   100
menu1()
{int   a;clrscr();
printf( "-------------------- ");
printf( "welcome   to   use   the   systerm   of   yundongyuan ");
printf( "--------------------\n ");
printf( "\t\t\t1.luru   chengji\n ");
printf( "\t\t\t2.shuchu   chengji\n ");
printf( "\t\t\t3.chaxun   yundongyuan\n ");
printf( "\t\t\t4.xiugai   ziliao\n ");
printf( "\t\t\t5.xiangmu   xingxi\n ");
printf( "\t\t\t6.duiwu   xingxi\n ");
printf( "\t\t\t7.likai\n ");
printf( "input   your   choice: ");
scanf( "%d ",&a);
while(a <0||a> 7)
{printf( "error!try   again!\n ");
printf( "input   your   choice: ");
scanf( "%d ",&a);}
switch(a)
{case   1:input_yund();break;
case   2:show_yund();break;
case   3:search_yund();break;
case   4:change_yund();break;
case   5:xiangmu_information();break;
case   6:team_information();break;
case   7:menu2();exit();
}
}
menu2()
{clrscr();printf( "\n\n\n\n\n\n\n\n ");
printf( "\t\t------------- ");
printf( "thanks   to   use ");
printf( "------------- ");getch();
}

struct   yundongyuan
{char   name[100];
char   team[100];
char   xiangmu[100];
int   mingci;
float   chengji;
}yund[SIZE];

struct     xiangmu
{char     name[10];
char     team[10];
char     xiangmu[10];
int     mingci;
float   chengji;
}xiang[10];

struct   team
{char     team[10];
int     score;
}   team[10];


void   save()
{FILE   *fp;
int   i;
if((fp=fopen( "yund_list.c ", "ab+ "))==NULL)
{printf( "cannot   open   file\n ");
return;
}
for(i=0;i <SIZE;i++)
{if(fwrite(&yund[i],sizeof(struct   yundongyuan),1,fp)!=1)
printf( "file   write   error\n ");   }
fclose(fp);
}

void   load()
{FILE   *fp;
int   i;
if((fp=fopen( "yund_dat.c ", "ab+ "))==NULL)
{printf( "cannot   open   file\n ");
return;}
for(i=0;i <SIZE;i++)
if(fread(&yund[i],sizeof(struct   yundongyuan),1,fp)!=1)
{if(feof(fp)){fclose(fp);return;}
printf( "file   read   error\n ");
}
fclose(fp);
}


  input_yund()
{int   i;           FILE   *fp;     fp=fopen( "yund_list.c ", "ab+ ");
printf( "please   input   the   information   of   yundongyuan ");
for(i=0;i <SIZE;i++);

scanf( "%10s%10s%10s%10d%10f\n ",yund[i].name,yund[i].team,yund[i].xiangmu,&yund[i].mingci,&yund[i].chengji);
save();   fclose(fp);
}
show_yund()
{int   i;
FILE   *fp;
fp=fopen( "yund_list.c ", "ab+ ");
for(i=0;i <SIZE;i++)
    {fread(&yund[i],sizeof(struct   yundongyuan),1,fp);
    printf( "%10s%10s%10s%10d%10f\n ",yund[i].name,yund[i].team,yund[i].xiangmu


    ,yund[i].mingci,yund[i].chengji);
    }
    fclose(fp);
    }
    search_yund()
    {int   i;
    char   str1[10];
    FILE   *fp;
    fp=fopen( "yund_list.c ", "ab+ ");
    printf( "please   input   the   name   of   yundongyuan ");
    scanf( "%s ",str1);
    for(i=0;i <SIZE;i++)
  {if(strcmp(str1,yund[i].name)==0)
  printf( "____name___team__xiangmu___mingci___chengji__\n ");
  printf( "%10s%10s%10s%10d%10f ",yund[i].name,yund[i].team,yund[i].xiangmu,yund[i].mingci,yund[i].chengji);
break;}
fclose(fp);
  }


  change_yund()
  {int   i,b,c;
  char   str[10];
    FILE   *fp;
    fp=fopen( "yund_list.c ", "ab+ ");
  printf( "input   the   yundongyuan`s   name   :\n ");
  scanf( "%s ",str);
  for(i=0;i <100;i++)
  {if(strcmp(str,yund[i].name)==0)
  printf( "name       team         xiangmu         mingci           chengji\n ");
  printf( "\t\t%10s%10s%10s%10d\t%10f\n ",yund[i].name,yund[i].team,yund[i].xiangmu,yund[i].mingci,
  yund[i].chengji);       c=i;
  break;}
  printf( "choose   which   you   want   to   change:\n ");
  printf( "1.name   2.team   3.xiangmu   4.mingci   5.chengji     6.back ");
  scanf( "%d ",&b);
  switch(b)
  {case   1:printf( "input   new   name: ");scanf( "%s ",yund[c].name);break;
  case   2:printf( "input   new   team: ");scanf( "%s ",yund[c].team);break;
  case   3:printf( "input   new   xiangmu: ");scanf( "%s ",yund[c].xiangmu);break;
  case   4:printf( "input   new   mingci: ");scanf( "%d ",&yund[c].mingci);break;
  case   5:printf( "input   new   chengji: ");scanf( "%f ",&yund[c].chengji);break;
  case   6:menu1();break;
  }fclose(fp);
  }
  xiangmu_information()
  {         int   i,j=0,k;       float   z;   char     str2[10],str3[10],str4[10];
FILE   *fp;
fp=fopen( "yund_list.c ", "ab+ ");
printf( "please   input   the   name   of   xiangmu ");
scanf( "%s ",str2);
for(i=0;i <SIZE;i++)
{if(strcmp(str2,yund[i].xiangmu)==0)
{strcpy(xiang[j].name,yund[i].name);
strcpy(xiang[j].team,yund[i].team);
strcpy(xiang[j].xiangmu,yund[i].xiangmu);
xiang[j].mingci=yund[i].mingci;
xiang[j].chengji=yund[i].chengji;j++;}
}fclose(fp);

for(i=0;i <=9;i++)
{for(j=0;j <9-i;j++)
{if(xiang[j].mingci <xiang[j+1].mingci)
{strcpy(str3,xiang[j].name);
strcpy(xiang[j].name,xiang[j+1].name);
strcpy(xiang[j+1].name,str3);
strcpy(str4,xiang[j].team);
strcpy(xiang[j].team,xiang[j+1].team);
strcpy(xiang[j+1].team,str4);
k=xiang[j].mingci;xiang[j].mingci=xiang[j+1].mingci;xiang[j+1].mingci=k;
z=xiang[j].chengji;xiang[j].chengji=xiang[j+1].chengji;xiang[j+1].chengji=z;}
}


}
for(j=0;j <=9;j++)
{printf( "\t\t%10s%10s%10s%13d\t%10f ",xiang[j].name,xiang[j].team,xiang[j].xiangmu,xiang[j].mingci,xiang[j].chengji)
;}fclose(fp);
}

team_information()
{int   i,j,m;char   str5[10];
FILE   *fp;
fp=fopen( "yund_list.c ", "ab+ ");
for(j=0;j <=9;j++)
{scanf( "%s ",team[j].team);team[j].score=0;
for(i=0;i <=SIZE;i++)
{if(strcmp(team[j].team,yund[i].team)==0)
if(yund[i].mingci==3)
team[j].score=team[j].score+1;
if(yund[i].mingci==2)
team[j].score=team[j].score+2;
if(yund[i].mingci==1)
team[j].score=team[j].score+3;
}
}
for(i=0;i <=9;i++)
{for(j=0;j <=9-i;j++)
{if(team[j].score> team[j+1].score)
{strcpy(str5,team[j].score);strcpy(team[j].score,team[j+1].score);strcpy(team[j+1].score,str5);
m=team[j].score;team[j].score=team[j+1].score;team[j+1].score=m;
}
}
}
for(j=0;j <=9;j++)
{printf( "%s%d\n ",team[j].team,team[j].score);}fclose(fp);
}


void     main()
{load();
menu1();
getch();
}

[解决办法]
你这问题都很基础哈,没人答我来答。
for(i=0;i <SIZE;i++); //这里问题明显,“;”加在这里整个循环是在空循环,

scanf( "%10s%10s%10s%10d%10f\n ",yund[i].name,yund[i].team,yund[i].xiangmu,&yund[i].mingci,&yund[i].chengji);//这里输入格式有问题 都这么长的数据么?这样输入太费劲了吧 后面的\n也去掉

还有就是怎么两次打开关闭文件,建议打开文件关闭文件在,输入函数里,save函数调用文件指针就可以了。
建议1:数据存入文件用fprintf函数。
建议2:给输入加条件,固定这么大循环,得输入到什么时候
[解决办法]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 5

struct ath
{
char name[10];
char item[10];
char team[10];
intorder;
float score;
}athlete[SIZE];

void input_info()
{
int i;
FILE *pf = NULL;
if( (pf = fopen( "data.dat ", "wb+ ")) == NULL)
printf( "Can 't open Data file!! ");
printf( "Please inpout athlete 's info(%d in all):\n ",SIZE);
for(i = 0; i < SIZE; i++)
{
printf( "Please inpout %d athlete 's info:\n ",i+1);
printf( "\rNAME:\n ");
while(scanf( "%s ",athlete[i].name) != 1)
{
printf( "input name error!\n ");
printf( "Please input name again!\n ");
}
printf( "ITEM:\n ");
while(scanf( "%s ",athlete[i].item) != 1)
{
printf( "input item error!\n ");
printf( "Please input item again!\n ");
}
printf( "TEAM:\n ");
while(scanf( "%s ",athlete[i].team) != 1)
{
printf( "input team error!\n ");
printf( "Please input team again!\n ");
}
printf( "order:\n ");
while(scanf( "%d ",&athlete[i].order) != 1)
{
printf( "input order error!\n ");
printf( "Please input order again!\n ");
}
printf( "score:\n ");
while(scanf( "%f ",&athlete[i].score) != 1)
{
printf( "input score error!\n ");
printf( "Please input score again!\n ");
}
fwrite(&athlete[i],sizeof(struct ath), 1, pf);
}
fclose(pf);
}

void show_info()
{
int i;
printf( "Athlete Infonation:\n ");
printf( "\rname item team order score:\n ");


for(i = 0; i < SIZE; i ++)
{
printf( "%-10s%-10s%-10s%d%21f\n ",athlete[i].name,athlete[i].item,athlete[i].team,athlete[i].order,athlete[i].score);
}
}

void Query_info()
{
char str[10];
int i;
int bfind = 0;
char exit = 'y ';
while(exit == 'y ' || exit == 'Y ')
{
printf( "Please input name to query:\n ");
scanf( "%s ",str);
for(i = 0; i < SIZE; i ++)
if(strcmp(str,athlete[i].name) == 0)
{
printf( "Athlete Infonation:\n ");
printf( "\rname item team order score:\n ");
printf( "%-10s%-10s%-10s%d%21f\n ",athlete[i].name,athlete[i].item,athlete[i].team,athlete[i].order,athlete[i].score);
bfind = 1;
printf( "select \ "y\ "to continue\n ");
printf( "Other to exit:\n ");
scanf( "%s ",&exit);
break;
}
if(bfind == 0)
{
printf( "can 't find the athlete 's info! ");
printf( "select \ "y\ "to continue\n ");
printf( "Other to exit:\n ");
scanf( "%s ",&exit);
}
}
}

void update_info()
{
char str[10];
int i;
int bfind = 0;
char exit = 'y ';
while(exit == 'y ' || exit == 'Y ')
{
printf( "Please input name to update:\n ");
scanf( "%s ",str);
for(i = 0; i < SIZE; i ++)
if(strcmp(str,athlete[i].name) == 0)
{
printf( "Input Athlete 's New Infonation:\n ");
printf( "\rNAME:\n ");
while(scanf( "%s ",athlete[i].name) != 1)
{
printf( "input name error!\n ");
printf( "Please input name again!\n ");
}
printf( "ITEM:\n ");
while(scanf( "%s ",athlete[i].item) != 1)
{
printf( "input item error!\n ");
printf( "Please input item again!\n ");
}
printf( "TEAM:\n ");
while(scanf( "%s ",athlete[i].team) != 1)
{
printf( "input team error!\n ");
printf( "Please input team again!\n ");
}
printf( "order:\n ");
while(scanf( "%d ",&athlete[i].order) != 1)
{
printf( "input order error!\n ");
printf( "Please input order again!\n ");
}
printf( "score:\n ");
while(scanf( "%f ",&athlete[i].score) != 1)
{
printf( "input score error!\n ");
printf( "Please input score again!\n ");
}
bfind = 1;
printf( "select \ "y\ "to continue\n ");
printf( "Other to exit:\n ");
scanf( "%s ",&exit);
break;
}
if(bfind == 0)
{
printf( "can 't find the athlete 's info! ");
printf( "select \ "y\ "to continue\n ");
printf( "Other to exit:\n ");
scanf( "%s ",&exit);
}
}
}

void exit_sys()
{
int i;
FILE *pf = NULL;
if( (pf = fopen( "data.dat ", "wb+ ")) == NULL)
printf( "Can 't open Data file!! ");
for(i = 0; i < SIZE; i++)
{
fwrite(&athlete[i],sizeof(struct ath), 1, pf);
}
fclose(pf);
}

void Load()
{
int i;


FILE *pf = NULL;
if( (pf = fopen( "data.dat ", "rb+ ")) == NULL)
printf( "Can 't open Data file!! ");
for(i = 0; i < SIZE; i++)
{
if(feof(pf))
break;
fread(&athlete[i],sizeof(struct ath), 1, pf);
}
fclose(pf);
}

void menu()
{
int a;
printf( "-------------------- ");
printf( "welcome to use the systerm of athlete ");
printf( "--------------------\n ");
printf( "\t\t\t1.input result\n ");
printf( "\t\t\t2.show result\n ");
printf( "\t\t\t3.query athlete\n ");
printf( "\t\t\t4.update data\n ");
printf( "\t\t\t5.exit\n ");
printf( "input your choice: ");
scanf( "%d ",&a);
while(a <0||a> 5)
{
printf( "error!try again!\n ");
printf( "input your choice: ");
scanf( "%d ",&a);
}
switch(a)
{
case 1:input_info();
break;
case 2:show_info();
break;
case 3:Query_info();
break;
case 4:update_info();
break;
case 5:exit_sys();
break;
}
}

void main()
{
char exit = 'y ';
Load();
while(exit == 'y ' || exit == 'Y ')
{
menu();
printf( "select \ "y\ "to continue\n ");
printf( "Other to exit:\n ");
scanf( "%s ",&exit);
}
}


我写的简单程序

热点排行