注册 登录
编程论坛 数据结构与算法

这个程序我实在检劳烦各位大侠给检查哈,底下的是我附带的编译时的错误,到我看不太懂,麻烦给我讲解哈,谢谢了!

王一南 发布于 2011-06-30 10:30, 568 次点击


#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)
3 回复
#2
王一南2011-06-30 20:43
为什么么人帮我忙呢,有什么问题可以给我说啊  这问题我真的不太懂,麻烦各位大侠了!
#3
无名可用2011-07-03 21:46
加一个头文件<stdlib.h>, malloc()函数在该头文件中定义
将filename改为一个字符串,代表要读取的文件名,例如"E:\\123.txt"
这样编译就应该没问题了。

这段代码主要意思:打开文件,从文件中读取一定量的字符放入变量new->buf中,并将new返回
水平有限,还有什么问题你可以查一下msdn,那上面有关于C语言文件操作的详细解释和代码
#4
firsttiger2011-07-06 21:30
改完: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);
}
1