| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 659 人关注过本帖
标题:可以帮我看下这里有问题吗? 其它部分没有问题 这里输出时只显示-1
只看楼主 加入收藏
灬小
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-1-11
收藏
 问题点数:0 回复次数:2 
可以帮我看下这里有问题吗? 其它部分没有问题 这里输出时只显示-1
void keep(struct student* head)//保存函数
{
    FILE* ke_;

    if(head == NULL)
    {
        printf("请在保存之前输入学生信息\n");
        return ;
    }
    ke_ = open();//打开一个文件
    sing(ke_, head);
    fclose(ke_);
    printf("保存完毕!\n");
}

void keep_1(FILE* ke_, struct student* node)//将其中一条信息保存
{
    int i;
    putc(node ->nember, ke_);
    for(i = 0; node ->name[i] != '\0'; i++)
        putc(node ->name[i], ke_);
    putc('\0', ke_);
    putc(node ->age, ke_);//
    for(i = 0; node ->sex[i]; i++)//性别
        putc(node ->sex[i], ke_);
    putc('\0', ke_);
}

int sing(FILE* st1, struct student* head)//将全部信息保存
{
    while(emptylist(head))
    {
        keep_1(st1, head);
        head = head ->next;
    }
    return 1;
}

FILE* open(void)//将打开的文件返回 打开一个用于保存
{
    FILE* fr;
    fr = fopen("informatio.txt", "w");//注意每次的写入都会使其原有的数据丢失
    if(fr == NULL)
        exit(1);
    return fr;
}//但是这里没有办法验证因为保存的是一些乱码  可能是保存的格式有问题

FILE* open_1(void)
{
    FILE* fr;
    fr = fopen("informatio.txt", "r");
    if(fr == NULL)
        exit(1);
    return fr;
}

struct student* fetch(void)//返回读取文件中的数据返回一个指针
{
    struct student* head = NULL;
    struct student* st1, *st2;
    FILE* fe_;
    int n = 0;

    head = distr();
    fe_ = open_1();
    head ->nember = getc(fe_);
    if(head ->nember != -1)//注意文件的结束标志
    {
        free(head);
        printf("请先保存信息!\n");
        return NULL;
    }
    atable(head, fe_);
    st1 = st2 = head;
    while(st2 ->nember != -1)
    {
        n++;
        if(n == 1)
            ;
        else
            st1 ->next = st2;
        st1 = st2;
        st2 = distr();
        st2 ->nember = getc(fe_);
        if(st2 ->nember == EOF)
            free(st2);
        else
            atable(st2, fe_);
    }
    st1 ->next = NULL;
    return head;
}

void atable(struct student* st1, FILE* at)//d读取文件中一个成员的信息
{
    int i;
    for(i = 0; st1 ->name[i] != '\0'; ++i)
        st1 ->name[i] = getc(at);
    st1 ->age = getc(at);
    for(i = 0; st1 ->sex[i] != '\0'; ++i)
        st1 ->sex[i] = getc(at);
2016-01-11 18:29
灬小
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-1-11
收藏
得分:0 
# define LEN sizeof(struct student)
# define NAME 7
# define SEX 3


struct student
{
    int nember;
    int name[NAME];
    int age;
    int sex[SEX];
    struct student* next;
};
这个是结构体
2016-01-11 18:30
灬小
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-1-11
收藏
得分:0 
我想将另一个链表中的内容保存到文件中然后再下次打开进行读取  这里是读取部分
2016-01-11 18:32
快速回复:可以帮我看下这里有问题吗? 其它部分没有问题 这里输出时只显示-1
数据加载中...
 
   



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

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