| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1420 人关注过本帖
标题:文件无法读入,调试时需要设置文件路径 ,不会是设置,不知道出现这种情况该 ...
取消只看楼主 加入收藏
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
结帖率:81.82%
收藏
已结贴  问题点数:20 回复次数:9 
文件无法读入,调试时需要设置文件路径 ,不会是设置,不知道出现这种情况该怎么办,求支招!!!
程序代码:
好像是fscanf那里出错了,调试时出现find source;please enter the path for fscanf.c 不知道怎么办,怎么进入为fscanf.c设置的路径
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#define NULL 0
struct student
{
    int num;
    char name[10];
    float score[3];
    struct student *next;
};
typedef struct student stu;
void main()
{
    stu *creat(int a);//创建节点数为a的链表;
    stu *paixu(stu *head);
    void print(stu *head);//输出链表
    stu *head;int n=4,del_num=1;
    head=creat(n);
    head=paixu(head);
    print(head);
   

}

stu *creat(int a)//创建节点数为a的链表;
{
    FILE *fp;
    stu *head,*p,*q;int n=0;
    p=q=(stu*)malloc(sizeof(stu));
    fp=fopen("E:\\1.txt","w");
    if(fp=NULL)
    {
        printf("******找不到文件*********\n");
        exit(0);
    }
    printf("******输入学生信息*********\n");
    fscanf(fp,"%d%s%f%f%f",&p->num,p->name,&p->score[0],&p->score[1],&p->score[2]);
    head=NULL;
    while(n<a)
    {
        n++;
        if(n==1) head=p;
        else q->next=p;
        q=p;
        p=(stu*)malloc(sizeof(stu));
        printf("******输入学生信息*********\n");
        fscanf(fp,"%d%s%f%f%f",&p->num,p->name,&p->score[0],&p->score[1],&p->score[2]);
    }
    fclose(fp);
    q->next=NULL;
    return head;
}
void print(stu *head)//输出链表
{
    FILE *fp;
    stu *p;
    p=head;
    fp=fopen("E:\\2.txt","r");
    if(fp=NULL)
    {
        printf("******找不到文件*********\n");
        exit(0);
    }
    printf("******输出链表*********\n");
    while(p!=NULL)
    {

        fprintf(fp,"   num=%d  name=%s  score[0]=%f  score[1]=%f  score[2]=%f  next=%d\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->next);
        p=p->next;

    }
    printf("******输出结束*********\n");
    fclose(fp);
}
//链表排序,keyword为num;
stu *paixu(stu *head)
{
    stu *p,*t,*r,*head1;
    if(head==NULL) return 0;
    head1=(stu*)malloc(sizeof(stu));
    p=head;t=r=head1;
    t->num=p->num;
    strcpy(t->name,p->name);
    t->score[0]=p->score[0];
    t->score[1]=p->score[1];
    t->score[2]=p->score[2];
    t->next=NULL;
    p=p->next;
    while(p!=NULL)
    {
        while(t->num<p->num&&t!=NULL)
        { r=t;t=t->next;}
        if(t==head1)
        {
            head1=p;p->next=t;
        }
        if(t==NULL)
        {
            t->next=p;p->next=NULL;
        }
        else
        {
            r->next=p;p->next=t;
        }
        p=p->next;
    }
    return head1;
}
2014-10-12 19:43
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 4 楼 TonyDeng
版主我用的是visualc++6.0,if(fp==null)是用来判断这个文件是否存在,如果不存在打不开者退出程序;
2014-10-15 19:24
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 2 楼 soulmate1023
我不是很明白  fscanf不是可以从文件读入吗,
2014-10-15 19:27
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 4 楼 TonyDeng
  我等号写成赋值符号了

2014-10-15 19:28
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 4 楼 TonyDeng
怪不得一直找不到文件了原来文件指针一直指向空,但是修改后还是无法读取文件内容怎么回事,
2014-10-15 19:38
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 4 楼 TonyDeng
版主我简单的调试了一下,发现fscanf可以正常读入,但是在执行paixu函数式在大循环while(p!=NULL)时的最后一句p=p->next;没起作用p一直指向头结点head的第二个节点,文件2txt,没有数据写入;排序的思想是:新建一条链,把原链解开,先把第一个节点数据放到新节点,然后依次解开原链,放到新链合适的位子;最后返回新链的头地址
2014-10-15 20:16
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 10 楼 TonyDeng
这是数据文件的内容
34 xiaohua 87 87 87
23 lining 76 78 89
2 xiaozhang 98 78 98
3 dajun 89 98 98
9 daming 98 98 98
保存在1.txt上,
昨天我调试了一下,好像paixu函数里的while大循环中最后一句p=p->next中没起作用,p指向的节点一直没变,好像进入死循环了;我不明白p=p->next;之后为什么节点没有后移;
2014-10-16 11:26
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 13 楼 TonyDeng
在本链上排序我不太会操作,我就想在生成一个链,然后把依次原链解开,每个节点按大小插入新链的相对位子,结束后新链就是原链的排序后的链;
2014-10-17 09:29
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 16 楼 TonyDeng
谢谢版主,这个方法很巧妙,但是如果数据是结构体的话且有不同类型,数组怎么存放;
2014-10-17 11:44
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 19 楼 TonyDeng
谢谢版主,我明白了,问题找到了,是在插入的时候已经修改了p->next的值,所以p=p->next;找不到下一节点,再次感谢版主!版主实在是太耐心了!
2014-10-17 20:58
快速回复:文件无法读入,调试时需要设置文件路径 ,不会是设置,不知道出现这种 ...
数据加载中...
 
   



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

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