| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 416 人关注过本帖
标题:C语言读文件问题
只看楼主 加入收藏
yaochen
Rank: 2
等 级:论坛游民
帖 子:15
专家分:19
注 册:2009-8-28
结帖率:75%
收藏
已结贴  问题点数:50 回复次数:2 
C语言读文件问题

在工程文件夹中建立名为Athletes的txt文档,并存入五个信息。程序运行时,除了信息,还会有一行乱码,并且n=6而不是n=5.估计是读文件部分出了问题,请各位指点。

#include"stdio.h"                 //          头文件声明
#include"string.h"
#include"stdlib.h"
#include"malloc.h"
#define LEN sizeof(struct L)
typedef struct L                      /*结构体*/
{
    char name[20];               //     节点信息为姓名、前驱指针、后继指针
     L *prior;
     L *next;                     
} L;
int n;                        //   统计结点个数

 
void print(L *head)                          //打印输出函数
{
    L*p;
    p=head;
    do
    {
        printf("%s\n",p->name);
        p=p->next;
    }
    while(p!=head);
}

L *load()                                  //读文件
{
   FILE *fp;
   L *head;
   L *p;
   p=(L*)malloc(LEN);
   head=(L*)malloc(LEN);
   n=0;
   if((fp=fopen("Athletes.txt","r"))==NULL)
   {
       printf("Error!\n");
       return(head);
   }
 
  
   //以下有问题
  
   fscanf(fp,"%s",head->name);
   head->next=head;
   head->prior=head;
  
   n=1;
   
 
 
   while(feof(fp)==0)
   {
     
       p->next=head->next;
       head->next->prior=p;
       p->prior=head;
       head->next=p;
      
       fscanf(fp,"%s",p->name);
       n=n+1;
       p=(L*)malloc(LEN);
      
}
 
 
   fclose(fp);
   return(head);
}


void main()                          //测试主函数
{
    L *head;
    head=(L*)malloc(LEN);
    head=load();
    print(head);
    printf("%d\n",n);
}


搜索更多相关主题的帖子: C语言 文件 
2009-08-28 22:21
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:35 
你的代码我运行是正常的,输出正确,没乱码。(TC2.0)
读5串字符串,n等于5是没错,怎么会是6呢?
fscanf(fp,"%s",head->name);
   head->next=head;
   head->prior=head;
  
   n=1;     /*这里读一次*/
   


   while(feof(fp)==0)  /*上面读了一串,剩4串,循环4次*/
   {
     
       p->next=head->next;
       head->next->prior=p;
       p->prior=head;
       head->next=p;
      
       fscanf(fp,"%s",p->name);
       n=n+1;                  /*这里4次,读完文件n=5没错*/
       p=(L*)malloc(LEN);
      
}

努力—前进—变老—退休—入土
2009-08-28 23:33
yaochen
Rank: 2
等 级:论坛游民
帖 子:15
专家分:19
注 册:2009-8-28
收藏
得分:0 
在VC6.0上不行啊
2009-08-29 09:54
快速回复:C语言读文件问题
数据加载中...
 
   



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

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