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

链表和文件!

王一南 发布于 2011-07-01 11:12, 461 次点击
我不知道这为什么运行不出来结果啊,是想把文件里头的内容读到链表中!烦劳各位大侠帮助小弟,将不胜感激!

#include<stdio.h>
#include<stdlib.h>
#define  BUFSIZE 10
struct filetext{
 char buf[BUFSIZE];
 struct filetext *next;
};
struct filetext * readfile(struct filetext * head)
{
  struct filetext * p1 = (struct filetext *)malloc(sizeof(struct filetext));
  FILE * fp;
  struct filetext * p =head;
  if((fp=(fopen("filename","rt")))==NULL)
  {
    printf("open file failure");
    getchar();
    exit(1);
  }
  
  if(fread(p1->buf,BUFSIZE,1,fp)<1)
  {
   printf("read file failure");
   return head;  
  }
  fclose(fp);
  if(!head)//如果传进来的head是个空指针,那么新指针就作为头节点返回
  {
    p1->next = NULL;
    return p1;
  }
  while(p->next) p = p->next;
  p->next = p1;
  p1->next = NULL;
  return head;
}
main()
{
    struct filetext *p;
    struct filetext *readfile(p);
}
我不知道这为什么运行不出来结果啊,是想把文件里头的内容存储到
2 回复
#2
无名可用2011-07-03 22:00
加一个头文件<stdlib.h>, malloc()函数在该头文件中定义
将filename改为一个字符串,代表要读取的文件名,例如"E:\\123.txt"
这样编译就应该没问题了。

这段代码主要意思:打开文件,从文件中读取一定量的字符放入变量new->buf中,并将new返回
水平有限,还有什么问题你可以查一下msdn,那上面有关于C语言文件操作的详细解释和代码
#3
寒风中的细雨2011-07-04 12:20
程序代码:
#include <stdio.h>
#include <stdlib.h>

#define  BUFSIZE 10

struct filetext
{
    char buf[BUFSIZE];
    struct filetext *next;
};

struct filetext * readfile(struct filetext * head)
{
    FILE * fp = NULL;
    struct filetext * p1 = (struct filetext *)malloc(sizeof(struct filetext));

    struct filetext * p =head;
    if((fp=(fopen("filename","rt")))==NULL)
    {
        printf("open file failure");
        getchar();
        exit(1);
    }

 
    if(fread(p1->buf,BUFSIZE,1,fp)<1)
    {
        printf("read file failure");
        return head;
    }
    fclose(fp);
    if(!head)//如果传进来的head是个空指针,那么新指针就作为头节点返回
    {
        p1->next = NULL;
        return p1;
    }

    while(p->next) p = p->next;
    p->next = p1;
    p1->next = NULL;

    return head;
}

int main(void)
{
    struct filetext *p = NULL;
    p = readfile(p);
    p->buf[BUFSIZE-1] = 0;
    puts(p->buf);
    printf("\n");

    return 0;
}
//我不知道这为什么运行不出来结果啊,是想把文件里头的内容存储到
只有本站会员才能查看附件,请 登录
   一个的情况可以读出来,  这里 字符串 的长度自己订制
1