| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 761 人关注过本帖
标题:(求助)有关文件内容处理的问题
只看楼主 加入收藏
a442579302
Rank: 2
来 自:C入门
等 级:论坛游民
帖 子:29
专家分:39
注 册:2009-12-29
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:10 
(求助)有关文件内容处理的问题
struct student
{
 char name[10];
 int num;
 char sex[5];
 int age;
 int chinese;
 int math;
 int english;
 int computer;
 int total;
 float average;
}s[5];         这是我定义的结构体.

--------------------------------
我用以下函数输入了5个学生的信息,并存入了一个文件内.
void save()
{
 int i;
 char file[15];
 FILE *fp;
 printf("please input a name of the file you want to save: ");
 scanf("%s",file);
 printf("\nplease input SIZE students informations:\n");
 printf("the information include:Name  Number  Sex  Age  Chinese  Math  English  Computer\n");
 for(i=0;i<SIZE;i++)
  { scanf("%s%d%s%d%d%d%d%d",s[i].name,&s[i].num,s[i].sex,&s[i].age,&s[i].chinese,&s[i].math,&s[i].english,&s[i].computer);
    s[i].total=s[i].chinese+s[i].math+s[i].english+s[i].computer;
    s[i].average=(float)s[i].total/4;
   }
 if((fp=fopen(file,"wb"))==NULL)
  {
   printf("cannot open file\n");
   return;
  }
 for(i=0;i<SIZE;i++)
   if(fwrite(&s[i],sizeof(struct student),1,fp)!=1)
    printf("file write error\n");
 fclose(fp);
}


请问我要怎样修改文件里面任意的学生信息??
高手见笑了,帮个忙,谢了!         
搜索更多相关主题的帖子: 文件 
2010-01-11 17:09
cgaa1
Rank: 2
来 自:uestc
等 级:论坛游民
帖 子:52
专家分:64
注 册:2009-4-11
收藏
得分:10 
读入文件,判断寻找关键点,修改,再写入
2010-01-11 22:39
a442579302
Rank: 2
来 自:C入门
等 级:论坛游民
帖 子:29
专家分:39
注 册:2009-12-29
收藏
得分:0 
int i,t,j,k;
char na[10];
FILE *fp;
scanf("%s",na);
           for(t=0;t<SIZE;t++)
            {
             if(strcmp(na,s[i].name)==0)
             for(j=t,k=0;j<SIZE-1;j++)
               {
                strcpy(na,s[j+1].name);strcpy(s[j].name,na);
                i=s[j+1].num;s[j].num=i;
                strcpy(se,s[j+1].sex);strcpy(s[j].sex,se);
                s[j].chinese=s[j+1].chinese;
                i=s[j+1].math;s[j].math=i;
                i=s[j+1].english;s[j].english=i;
                i=s[j+1].computer;s[j].computer=i;
                o=s[j+1].average;s[j].average=o;
                i=s[j+1].total;k++;
               }
             }
           if(k!=0)
            {
             printf("\n\ndelete success!");
             for(i=0;i<SIZE-1;i++)
             fwrite(&s[i],sizeof(struct student),1,fp);
             fclose(fp);
             }
           else
            {
             printf("delete fail!!!");
             fclose(fp);
             }

我写了一段,但是运行时但不到效果, 麻烦帮忙看下吧!

理想很丰满·~现实很骨感!
2010-01-13 15:47
mb0500230124
Rank: 2
等 级:论坛游民
帖 子:7
专家分:35
注 册:2009-9-29
收藏
得分:0 
直接重新赋值就可以了,然后再次读入文件就OK
2010-01-13 16:54
mb0500230124
Rank: 2
等 级:论坛游民
帖 子:7
专家分:35
注 册:2009-9-29
收藏
得分:0 
char mzhi[10];
fopen("","wr+");
printf("请输入你要修改人的名字:");
scanf("%s",mzhi);
for(i=0;i<SIZE;i++)
if(strcmp(mzhi,s[i].name)==0)
{printf("名字:");
scanf("%s",s[i].name);
.
.
.
.
.
.
printf("\n电脑:");
scanf("%d",s[i].computer);
s[i].total=..........;
s[i].average=s[i]total/4;
fwrite(&s[i],sizeof(struct student),1,fp);
fclose(fp);
2010-01-13 17:07
a442579302
Rank: 2
来 自:C入门
等 级:论坛游民
帖 子:29
专家分:39
注 册:2009-12-29
收藏
得分:0 
回复 5楼 mb0500230124
谢谢了

理想很丰满·~现实很骨感!
2010-01-13 17:14
a442579302
Rank: 2
来 自:C入门
等 级:论坛游民
帖 子:29
专家分:39
注 册:2009-12-29
收藏
得分:0 
......
......
printf("\nplease input a student's name you want to delete: ");
           scanf("%s",na);
           for(t=0;t<SIZE;t++)
            {
             if(strcmp(na,s[i].name)==0)
             for(j=t,k=0;j<SIZE-1;j++)
               {
                strcpy(na,s[j+1].name);strcpy(s[j].name,na);
                i=s[j+1].num;s[j].num=i;
                strcpy(se,s[j+1].sex);strcpy(s[j].sex,se);
                s[j].chinese=s[j+1].chinese;
                i=s[j+1].math;s[j].math=i;
                i=s[j+1].english;s[j].english=i;
                i=s[j+1].computer;s[j].computer=i;
                o=s[j+1].average;s[j].average=o;
                i=s[j+1].total;k++;
               }
             }
           if(k!=0)
            {
             printf("\n\ndelete success!");
             fclose(fp);
             for(i=0;i<SIZE-1;i++)
             fwrite(&s[i],sizeof(struct student),1,fp);
             fclose(fp);
             }
           else
            {
             printf("delete fail!!!");
             fclose(fp);
             }
           };getch();break

再弱弱地问下,我这样写 删除功能问题在哪里? 我试了下貌似不行。。。嘿嘿,有劳看下

理想很丰满·~现实很骨感!
2010-01-13 17:19
a442579302
Rank: 2
来 自:C入门
等 级:论坛游民
帖 子:29
专家分:39
注 册:2009-12-29
收藏
得分:0 
我三楼贴错了。。。。

理想很丰满·~现实很骨感!
2010-01-13 17:22
mb0500230124
Rank: 2
等 级:论坛游民
帖 子:7
专家分:35
注 册:2009-9-29
收藏
得分:10 
......
printf("\nplease input a student's name you want to delete: ");
           scanf("%s",na);
           for(i=0;i<SIZE;i++)/*这里是用i的吧*/
            {
             if(strcmp(na,s[i].name)==0)/*----这里的i一直没变*/.
             for(j=i,k=0;j<SIZE-1;j++)                        
               {
                strcpy(s[j].name,s[j+1].name);
                s[j].num=s[j+1].num;
                strcpy(s[j].sex,s[j+1].sex);
                s[j].chinese=s[j+1].chinese;
                s[j].math=s[j+1].math;
                s[j].english=s[j+1].english;
                s[j].computer=s[j+1].computer;
                s[j].average=s[j+1].average;
               s[j].total=s[j+1].total;k++;SIZE--;

               }
             }
           if(k!=0)
            {
             printf("\n\ndelete success!");
             fclose(fp);
             for(i=0;i<SIZE-1;i++)
             fwrite(&s[i],sizeof(struct student),1,fp);
             fclose(fp);
             }
           else
            {
             printf("delete fail!!!");
             fclose(fp);
             }
           };getch();break
2010-01-13 18:01
a442579302
Rank: 2
来 自:C入门
等 级:论坛游民
帖 子:29
专家分:39
注 册:2009-12-29
收藏
得分:0 
SIZE-- ??   貌似有问题

理想很丰满·~现实很骨感!
2010-01-13 18:08
快速回复:(求助)有关文件内容处理的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017028 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved