| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2538 人关注过本帖
标题:麻烦大家帮我看看这句话有什么错(文件读取)?’
只看楼主 加入收藏
小焦叔叔
Rank: 1
来 自:广西 河池
等 级:新手上路
帖 子:59
专家分:2
注 册:2020-2-15
结帖率:78.57%
收藏
已结贴  问题点数:20 回复次数:10 
麻烦大家帮我看看这句话有什么错(文件读取)?’
我在做一个链表操作的练习,做一个电话号码本,碰到这句读取字符串的语句,百思不得其解,怎么也弄不通,麻烦大家帮看看是错在哪里。谢谢!!!!!!

#include"STDIO.H"
#include"STDLIB.H"
#include"STRING.H"
#include"DEF_TYPE.H"

struct tel_node *Open_Node()
{
    FILE *fp_tel_node;
    struct tel_node *head;
    struct tel_node *read;
    struct tel_node *tail,*p_new;
    char temp;
   
    extern struct tel_node *Creat_Node();
    extern void Node_Display(struct tel_node *head);
   
    system("cls");
   
    fp_tel_node=fopen("E:\\电话号码本.txt","rt");
   
    if(fp_tel_node)
    {
        while(feof(fp_tel_node)==0)
        {
            fscanf(fp_tel_node,"%s\t%s\n",read->name,read->tel_code);
            printf("%s\t%s\n\n",read->name,read->tel_code);
            p_new=(struct tel_node *)malloc(sizeof(struct tel_node));
            strcpy(p_new->name,read->name);
            strcpy(p_new->tel_code,read->tel_code);
            p_new->next=NULL;
            if(head==NULL)
            {
                head=p_new;
            }
            else
            {
                tail->next=p_new;   
            }
            tail=p_new;
        }
        
        fclose(fp_tel_node);   
    }
    else
    {
        head=Creat_Node();
        Node_Display(head);
    }
   
    return(head);
}

就是fscanf(fp_tel_node,"%s\t%s\n",read->name,read->tel_code);那句

硬盘上的数据如下:

图片附件: 游客没有浏览图片的权限,请 登录注册






搜索更多相关主题的帖子: struct name 读取 include head 
2021-02-20 13:11
小焦叔叔
Rank: 1
来 自:广西 河池
等 级:新手上路
帖 子:59
专家分:2
注 册:2020-2-15
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

自学成才
2021-02-20 13:21
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1927
专家分:2992
注 册:2009-12-22
收藏
得分:5 
我的IDE缺少DEF_TYPE.H,无法调试。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2021-02-20 19:13
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:5 
缺“&”吗?
2021-02-20 19:49
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:5 
fscanf(fp_tel_node,"%s\t%s\n",read->name,read->tel_code);这句代码如果有错误,编译器会给出提示的,很不理解为什么不去看那个提示呢,“缺“&”吗?”是否要加 & 符号与read->name类型有关,从 strcpy(p_new->name,read->name);;这句代码来猜测,应该不用加,只有知道read->name类型的人才能给出准确的回答,
2021-02-20 22:32
小焦叔叔
Rank: 1
来 自:广西 河池
等 级:新手上路
帖 子:59
专家分:2
注 册:2020-2-15
收藏
得分:0 
DEF_TYPE.H 如下

#ifndef _DEF_TYPE_H
#define _DEF_TYPE_H

struct tel_node
{
    char name[20];
    char tel_code[11];
    struct tel_node *next;
};

#endif

编译、链接都没有错误,一按打开键就弹出错误对话框,程序也再无法继续运行

我把程序全部发给你

自学成才
2021-02-21 19:20
小焦叔叔
Rank: 1
来 自:广西 河池
等 级:新手上路
帖 子:59
专家分:2
注 册:2020-2-15
收藏
得分:0 
MAIN.C

#include"STDIO.H"
#include"CONIO.H"
#include"STDLIB.H"
#include"DEF_TYPE.H"

int main(void)
{
    struct tel_node *head;
    char key_select;
    char name[20];
   
    extern void Nemu_Display();
    extern struct tel_node *Open_Node();
    extern struct tel_node *Creat_Node();
    extern struct tel_node *Add_Node(struct tel_node *head);
    extern struct tel_node *Dec_Node(struct tel_node *head,char *name);
    extern struct tel_node *Clean_Node(struct tel_node *head);
    extern void Find_Node(struct tel_node *head,char *name);
    extern void Node_Display(struct tel_node *head);
    extern void Save_Node(struct tel_node *head);
   
    while(key_select!=0x1B)
    {
        Nemu_Display();
        key_select=getch();
        switch(key_select)
        {
            case '1':head=Open_Node();getch();break;
            case '2':system("cls");printf("请输入要查找的联系人姓名:%s",name);Find_Node(head,name);getch();break;
            case '3':head=Add_Node(head);Node_Display(head);getch();break;
            case '4':system("cls");printf("请输入要删除的联系人姓名:%s",name);head=Dec_Node(head,name);Node_Display(head);getch();break;
            case '5':head=Clean_Node(head);break;
            case '6':Save_Node(head);puts("数据已保存!");getch();break;
            default:break;
        }
    }
   
    return(0);
}


INTER_FACE.C

#include"STDIO.H"
#include"CONIO.H"
#include"STDLIB.H"
#include"DATA.H"

void Nemu_Display()
{
    char i,j;
   
    system("cls");
    puts("\n\n\n\n");
    for(i=0;i<2;i++)
    {   
        printf("\t\t\t%s\t%s\t%s\n",nemu[i*3],nemu[i*3+1],nemu[i*3+2]);   
        puts("\t\t\t------\t------\t------");   
        puts("\n\n");   
    }
}


OPEN_NODE.C

#include"STDIO.H"
#include"STDLIB.H"
#include"STRING.H"
#include"DEF_TYPE.H"

struct tel_node *Open_Node()
{
    FILE *fp_tel_node;
    struct tel_node *head;
    struct tel_node *read;
    struct tel_node *tail,*p_new;
    char temp;
   
    extern struct tel_node *Creat_Node();
    extern void Node_Display(struct tel_node *head);
   
    system("cls");
   
    fp_tel_node=fopen("E:\\电话号码本.txt","rt");
   
    if(fp_tel_node)
    {
        while(feof(fp_tel_node)==0)
        {
            fscanf(fp_tel_node,"%s\t%s\n",read->name,read->tel_code);
            printf("%s\t%s\n\n",read->name,read->tel_code);
            p_new=(struct tel_node *)malloc(sizeof(struct tel_node));
            strcpy(p_new->name,read->name);
            strcpy(p_new->tel_code,read->tel_code);
            p_new->next=NULL;
            if(head==NULL)
            {
                head=p_new;
            }
            else
            {
                tail->next=p_new;   
            }
            tail=p_new;
        }
        
        fclose(fp_tel_node);   
    }
    else
    {
        head=Creat_Node();
        Node_Display(head);
    }
   
    return(head);
}


SAVE_NODE.C

#include"STDIO.H"
#include"STDLIB.H"
#include"DEF_TYPE.H"

void Save_Node(struct tel_node *head)
{
    FILE *fp_tel_node;
    struct tel_node *write;
   
    fp_tel_node=fopen("E:\\电话号码本.txt","wt");
   
    if(head)
    {
        write=head;
        while(write)
        {
            fprintf(fp_tel_node,"%s\t%s\n",write->name,write->tel_code);
            write=write->next;
        }   
    }
   
    system("cls");
   
    fclose(fp_tel_node);
}



CRAET_NODE.C

#include"STDIO.H"
#include"CONIO.H"
#include"STDLIB.H"
#include"STRING.H"
#include"DEF_TYPE.H"

struct tel_node *Creat_Node()
{
    struct tel_node *head;
    struct tel_node *tail,*p_new;
    char name[20];
    char tel_code[11];
   
    head=NULL;
    printf("姓名\t电话号码:");
    scanf("%s%s",name,tel_code);
    putch('\n');
    while(strcmp(name,"0")!=0&&strcmp(tel_code,"0")!=0)
    {
        p_new=(struct tel_node *)malloc(sizeof(struct tel_node));
        strcpy(p_new->name,name);
        strcpy(p_new->tel_code,tel_code);
        p_new->next=NULL;
        if(head==NULL)
        {
            head=p_new;
        }
        else
        {
            tail->next=p_new;   
        }
        tail=p_new;
        printf("姓名\t电话号码:");
        scanf("%s%s",name,tel_code);
        putch('\n');
    }
   
    return(head);
}



ADD_NODE.C

#include"STDIO.H"
#include"CONIO.H"
#include"STDLIB.H"
#include"DEF_TYPE.H"

struct tel_node *Add_Node(struct tel_node *head)
{
    struct tel_node *tail,*p_new;
    char name[20];
    char tel_code[11];
   
    system("cls");
    printf("姓名\t电话号码:");
    scanf("%s%s",name,tel_code);
    putch('\n');
    p_new=(struct tel_node *)malloc(sizeof(struct tel_node));
    strcpy(p_new->name,name);
    strcpy(p_new->tel_code,tel_code);
    p_new->next=NULL;
    if(head==NULL)
    {
        head=p_new;        
    }   
    else
    {
        tail=head;
        while(tail->next!=NULL)
        {
            tail=tail->next;
        }
        tail->next=p_new;
        tail=p_new;   
    }
   
    return(head);
}



DEC_NODE.C

#include"STDIO.H"
#include"STDLIB.H"
#include"STRING.H"
#include"DEF_TYPE.H"

struct tel_node *Dec_Node(struct node *head,char *name)
{
    struct tel_node *dec,*front,*back;
   
    if(head!=NULL)
    {
        dec=head;
        while(strcmp(dec->name,name)!=0)
        {
            front=dec;
            dec=dec->next;
        }   
        back=dec->next;
        front->next=back;
        free(dec);   
    }
   
    return(head);
}



CLEAR_NODE.C

#include"STDIO.H"
#include"STDLIB.H"
#include"DEF_TYPE.H"

struct tel_node *Clean_Node(struct tel_node *head)
{
    struct tel_node *del,*next;
   
    system("cls");
    del=head;
    while(del)
    {
        next=del->next;
        free(del);
        del=next;
    }   
    head=NULL;
   
    return(head);
}



FIND_NODE.C

#include"STDIO.H"
#include"CONIO.H"
#include"STDLIB.H"
#include"STRING.H"
#include"DEF_TYPE.H"

void Find_Node(struct tel_node *head,char *name)
{
    struct tel_node *find;
   
    system("cls");
    if(head==NULL)
    {
        puts("没有联系人!\n");
    }   
    else
    {
        find=head;
        while(strcmp(find->name,name)!=0&&find!=NULL)
        {
            find=find->next;   
        }
        if(find!=NULL)
        {
            printf("%s\t%s\n",find->name,find->tel_code);   
        }   
        else
        {
            puts("没有此联系人!\n");   
        }
    }
}



NODE_DISPLAY.C

#include"STDIO.H"
#include"CONIO.H"
#include"STDLIB.H"
#include"DEF_TYPE.H"

void Node_Display(struct tel_node *head)
{
    struct tel_node *dis;
   
    system("cls");
    if(head==NULL)
    {
        puts("没有联系人!\n");
    }
    else
    {
        dis=head;
        while(dis)
        {
            printf("%s\t%s\n\n",dis->name,dis->tel_code);
            dis=dis->next;
        }   
    }
}



DATA.H

#ifndef _DATA_H
#define _DATA_H

extern char *nemu[6];

#endif



DATA.C

#include"DATA.H"

char *nemu[6]=
{
    "1.打开","2.查找","3.添加","4.删除","5.清除","6.保存"   
};



DEF_TYPE.H

#ifndef _DEF_TYPE_H
#define _DEF_TYPE_H

struct tel_node
{
    char name[20];
    char tel_code[11];
    struct tel_node *next;
};

#endif


总共13个文件

自学成才
2021-02-21 19:29
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
“编译、链接都没有错误” ,不知道你的程序怎么能编译过,struct tel_node *Dec_Node(struct node*head,char *name) 看这句,明显类型错误
2021-02-22 01:15
小焦叔叔
Rank: 1
来 自:广西 河池
等 级:新手上路
帖 子:59
专家分:2
注 册:2020-2-15
收藏
得分:0 
struct tel_node *Dec_Node(struct node*head,char *name)这句的确有错,但是我也不知道编译器是怎样通过的,用的是C-Free编译器,这个文件还没有调试到,调试到OPEN_NODE.C空

自学成才
2021-02-22 20:24
小焦叔叔
Rank: 1
来 自:广西 河池
等 级:新手上路
帖 子:59
专家分:2
注 册:2020-2-15
收藏
得分:0 
谢谢你那么仔细的帮我找错误,谢谢!!!!!!

自学成才
2021-02-22 20:26
快速回复:麻烦大家帮我看看这句话有什么错(文件读取)?’
数据加载中...
 
   



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

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