| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 568 人关注过本帖
标题:这个程序我实在检劳烦各位大侠给检查哈,底下的是我附带的编译时的错误,到 ...
只看楼主 加入收藏
王一南
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2010-11-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
这个程序我实在检劳烦各位大侠给检查哈,底下的是我附带的编译时的错误,到我看不太懂,麻烦给我讲解哈,谢谢了!


#include<stdio.h>
#define  BUFSIZE 10
struct filetext{
 char buf[BUFSIZE];
 struct filetext *next;
}
//读取文件,并插入进链表的函数,filename为要读取的文件名,head为链表的头节点,函数返回插入新节点后链表的头节点
struct filetext * readfile(struct filetext * head)
{
  struct filetext * new = (struct filetext *)malloc(sizeof(struct filetext));//定义一个新成员,并给它分配空间
  FILE * fp;//读取文件的文件流
  struct filetext * p =head;//定义一个p,用来寻找链表中最后一个节点
  if((fp=(fopen(filename,"r+")))==NULL)
  {
    //如果打开文件失败,返回head,并提示
    printf("open file failure");
    return head;
  }
  //然后开始读取文件,放到new的buf中
  if(fread(new->buf,BUFSIZE,1,fp))
  {
   //如果读取失败,提示,并返回head
   printf("read file failure");
   return head;  
  }
  fclose(fp);
  //文件读取完后,进行链表操作
  if(!head)//如果传进来的head是个空指针,那么新指针就作为头节点返回
  {
    new->next = NULL;
    return new;
  }
  while(p->next) p = p->next;//把p移动到最后一个节点
  p->next = new;//p的下一个节点为new
  new->next = NULL;//new的下一个节点为空
  return head;
}
main()
{
    struct filetext *head;
     *readfile(head);
}
这个程序我实在检劳烦各位大侠给检查哈,底下的是我附带的编译时的错误,到我看不太懂,麻烦给我讲解哈,谢谢了!


E:\VC6\Common\MSDev98\Bin\链表.c(10) : warning C4013: 'malloc' undefined; assuming extern returning int
E:\VC6\Common\MSDev98\Bin\链表.c(13) : error C2065: 'filename' : undeclared identifier
E:\VC6\Common\MSDev98\Bin\链表.c(13) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int '
E:\VC6\Common\MSDev98\Bin\链表.c(13) : warning C4024: 'fopen' : different types for formal and actual parameter 1
Error executing cl.exe.

链表.obj - 2 error(s), 3 warning(s)
搜索更多相关主题的帖子: include 空间 
2011-06-30 10:30
王一南
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2010-11-29
收藏
得分:0 
为什么么人帮我忙呢,有什么问题可以给我说啊  这问题我真的不太懂,麻烦各位大侠了!
2011-06-30 20:43
无名可用
Rank: 4
等 级:业余侠客
帖 子:79
专家分:259
注 册:2010-7-27
收藏
得分:20 
加一个头文件<stdlib.h>, malloc()函数在该头文件中定义
将filename改为一个字符串,代表要读取的文件名,例如"E:\\123.txt"
这样编译就应该没问题了。

这段代码主要意思:打开文件,从文件中读取一定量的字符放入变量new->buf中,并将new返回
水平有限,还有什么问题你可以查一下msdn,那上面有关于C语言文件操作的详细解释和代码
2011-07-03 21:46
firsttiger
Rank: 1
等 级:新手上路
帖 子:14
专家分:3
注 册:2005-11-2
收藏
得分:0 
改完:Dev中测试通过。
问题这样的:
1.struct filetext{}结构定义,须以”;“结尾,上述程序丢掉了。
2.将诸如:struct filetext * readfile 这样的指针定义,注意”*“的位置。
3.filename未定义,可定义成如下的 "D:\\testfile.txt"

编译错误问题:
malloc 未定义
filename 未声明的标示符,即没有说明
格式类型不对。书写的不规范。

仅供参考,相互学习。

#include<stdio.h>
#define  BUFSIZE 10
#define filename "D:\\testfile.txt"
struct filetext{
char buf[BUFSIZE];
struct filetext *next;
};
//读取文件,并插入进链表的函数,filename为要读取的文件名,head为链表的头节点,函数返回插入新节点后链表的头节点
struct filetext* readfile(struct filetext* head)
{
  struct filetext* new = (struct filetext*)malloc(sizeof(struct filetext));//定义一个新成员,并给它分配空间
  FILE* fp;//读取文件的文件流
  struct filetext* p =head;//定义一个p,用来寻找链表中最后一个节点
  if((fp=(fopen(filename,"r+")))==NULL)
  {
    //如果打开文件失败,返回head,并提示
    printf("open file failure");
    return head;
  }
  //然后开始读取文件,放到new的buf中
  if(fread(new->buf,BUFSIZE,1,fp))
  {
   //如果读取失败,提示,并返回head
   printf("read file failure");
   return head;  
  }
  fclose(fp);
  //文件读取完后,进行链表操作
  if(!head)//如果传进来的head是个空指针,那么新指针就作为头节点返回
  {
    new->next = NULL;
    return new;
  }
  while(p->next) p = p->next;//把p移动到最后一个节点
  p->next = new;//p的下一个节点为new
  new->next = NULL;//new的下一个节点为空
  return head;
}
main()
{
struct filetext* head;
     *readfile(head);
}
2011-07-06 21:30
快速回复:这个程序我实在检劳烦各位大侠给检查哈,底下的是我附带的编译时的错误 ...
数据加载中...
 
   



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

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