| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1343 人关注过本帖
标题:txt文档写入问题。自学C不为期末作业。。。。。
只看楼主 加入收藏
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:17 
txt文档写入问题。自学C不为期末作业。。。。。
     scanf("%s,%d,%s,%f,%f,%f",&((++p)->clas),&(p->number),&(p->name),&(p->clan),&(p->english),&(p->math));
     fwrite(p,sizeof(struct student),1,fp); 我一个FP指向的文档输入2进制的内容后 在文档里面可以看到又换行。。。。
     fwrite("\n",1,1,fp);问题是我用
    。。。。。。。。。。。。。。。。。。。。。。。
        fread(word,100,20,fp);  这句话输出内容的时候  如果输入两个人的数据 读出该文档内容里面换行后面的内容全部不见了!而文档里面可以正常显示。
        printf("%s\n",word);  
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
我自己想了想,把 fwrite(p,sizeof(struct student),1,fp);  里面的sizeof(struct student)改成一个肯定小于我输入内容长度的数字 比如2
结果 再次输出 结果可以看到换行!就是数据不完整 但是起码有换行。。 我就想 是不是sizeof(struct student)的过大了?
于是我把sizeof(struct student)换成一个肯定大于我输入内容长度的数字 比如1000,结果和之前一样 文档可以显示就是fread(word,100,20,fp);  输出内容的时候
换行后面的就全消失了。。。。

因为到了期末这个敏感时期 我问了一些敏感的问题。。。我是自学的 不为作业。为了提高这个问题的关注所以我弄了100分,没办法很多人看到期末作业内容就
直接忽略。
搜索更多相关主题的帖子: english 自学 number word 
2011-12-30 09:03
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
求指导

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-12-30 09:04
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:25 
sizeof(struct student),????

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2011-12-30 09:35
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
是我的问题表述得不清楚吗?

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-12-30 09:50
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
#include<stdlib.h>
#include <stdio.h>
#include<string.h>
#include<process.h>
#include<string.h>
#include<math.h>
#define null 0
struct student
{
char  clas; /*班级*/
int   number; /*学号*/
char  name; /*姓名*/
float clan;/*C语言成绩*/
float english; /*大学英语成绩*/
float math; /*高等数学成绩*/
float sum; /*总分*/
float adver; /*平均分*/
}stu[50];
static struct student *p=stu;
static int i=0;/*用来控制*P指向的数据输出时候的范围范围*/
FILE *fp;




/*输入数据系统*/
char input(int n)
{  
if((fp=(fopen("d:\\student.txt","a+")))==null)
printf("there is not file!");
    int main(int);
         system("cls");/*清屏处理*/
         printf("请输入学生的:班级,号数,姓名,C语言成绩,高英成绩,高数成绩)\n");
         scanf("%s,%d,%s,%f,%f,%f",&((++p)->clas),&(p->number),&(p->name),&(p->clan),&(p->english),&(p->math));
         i++;
         fwrite(p,sizeof(struct student),1,fp);
         fwrite("\n",1,1,fp);
         fclose(fp);
                  /*处理数据*/
(p->adver)=((p->clan)+(p->english)+(p->math))/3;
(p->sum)=((p->clan)+(p->english)+(p->math));


   
        
                printf("还需要输入数据吗?\n1---是 \n2---否\n请输入:");
                scanf("%d",&n);
                if(n==1)  input(0);
                else if(n==2) return(0),system("cls"),main(0);
                else printf("输入已错误,请重新开吧");
}


int main(int)         /*主函数*/
{


   
int n;
system("cls");
    printf(" 本系统将所有学生资料自动储存在D盘的student.txt文档-请查收\n=====学生成绩管理系统=====\n\n【1】输入数据\n【2】显示所有数据\n【3】按平均分降序排列\n【4】查找并显示一组数据\n【5】插入一组数据\n【6】修改一组数据\n【7】删除一组数据\n【8】从文件中读入数据\n【9】将所有记录写入文件\n【0】退出本系统\n输入:");
scanf("%d",&n);
    switch(n)
    {
    case 1:{input(0);break;}
    case 2:{/*显示数据系统*/
        system("cls");
        printf("显示所有的数据:\n\n\n");
        char word[10000];
        memset(word,0,sizeof(word));
         if((fp=(fopen("d:\\student.txt","a+")))==null)
         printf("there is not file!");
        fread(word,100,20,fp);
        printf("%s\n",word);
        fclose(fp);
        printf("\n\n输入任意可回主菜单:");
        scanf("%s",&word);
        main(0);
           }
    case 3:{/*排序系统*/
        system("cls");
        int j,k,a[100];
        if(i==1) printf("只有一个学生的数据,没什么好排序的。- -!\n");
        for(k=1;k<=i;k++)
        for(j=1;j<=i;j++)
        {if(((p+k)->adver)<=((p+j)->adver))
         a[k]=j;a[j]=k;
        }
        printf("\n\n降序排序数列:\n\n");
        for(j=1;j<=i;j++)
            printf("%s %d %s %d %d %d\n",((p+j)->clas),((p+j)->number),((p+j)->name),((p+j)->clan),((p+j)->english),((p+j)->math));
         printf("输入任意内容回到主菜单:");
         scanf("%d",j);
         main(0);
         
           }
    case 4:break;
    case 5:break;
    case 6:break;
    case 8:break;
    case 9:break;
    case 0:break;
    default :printf("wrong!");
    }
}
                        

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-12-30 10:04
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:25 
好久没弄过这方面的了,我试着改改吧

我的地盘
2011-12-30 10:45
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
我的地盘

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2011-12-30 10:49
樾宝
Rank: 3Rank: 3
来 自:常德
等 级:论坛游侠
帖 子:72
专家分:147
注 册:2011-8-19
收藏
得分:25 


好麻烦哦!
是不是你的软件有问题哦?
这个有可能哦!
2011-12-30 11:08
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:25 
不说怎么读写文件,这个student结构本身就设计错误,你都做的什么呀。

授人以渔,不授人以鱼。
2011-12-30 12:06
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
不好意思 因为自学 没学好概念问题

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-12-30 12:11
快速回复:txt文档写入问题。自学C不为期末作业。。。。。
数据加载中...
 
   



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

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