| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 322 人关注过本帖
标题:文件读取过程出现了问题
只看楼主 加入收藏
风化DE风华
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
文件读取过程出现了问题
typedef struct student_info{
    char name[20];
    int score;
    long number;
    struct student_info *next;

}INFO;
INFO *fcreat(FILE *fp)   /*从文件中读取并创建链表*/
{
    INFO *head=NULL,*p1=NULL,*p2=NULL;
    long number;
    int score;
    char name[20];
    int n=0;
    do{
        fscanf(fp,"%ld%s%d",&number,name,&score);/*此处为问题所在*/
        if(number==NULL)break;
        n++;
        p1=(INFO *)malloc(sizeof(INFO));
        p1->number=number,p1->score=score,strcpy(p1->name,name),p1->next=NULL;
        if(n==1)
            head=p2=p1;
        else{
            p2->next=p1;
            p2=p1;   
        }   
    }while(1);

    return head;
}
int main()
{
...../*程序段省略*/
     if((fp=fopen("stu_info.txt","r+"))==NULL){
          puts("Can't open file.\n");
          return 0;
    }
    head=fcreat(fp);

...../*程序段省略*/
}
stu_info.txt 内容为(例):11124564 ljd 88 11124589 lxj 87 11124567 jt 84
在fcreat函数中,循环第一次从文件头部读入数据并存入第一个节点后,再第二次循环又从文件头部开始读取,怎样处理才能使读取文件从之后的位置开始(例如在do-while 循环第二次时从第二个学号读入)?
特此求助!
搜索更多相关主题的帖子: number head long 
2012-06-05 02:48
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:20 
不用怎样处理,标准文件的读写都是行读取,也就是一次读取一个字符串,串未有'\0'标志,当读取第一个串后,文件指针自动跳到第二个行首。
2012-06-05 08:18
风化DE风华
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-5
收藏
得分:0 
回复 2楼 cuijunchao
我修改了输入方式,stu_info.txt中的内容变为:
11124564 ljd 88
11124589 lxj 87
11124567 jt 84
 然后可以用了,谢谢
2012-06-05 10:24
快速回复:文件读取过程出现了问题
数据加载中...
 
   



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

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