| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 812 人关注过本帖
标题:这一串代码编译成功,但是显示结果不对,求解
只看楼主 加入收藏
粉jj
Rank: 2
等 级:论坛游民
威 望:1
帖 子:123
专家分:82
注 册:2011-3-8
结帖率:85.11%
收藏
 问题点数:0 回复次数:9 
这一串代码编译成功,但是显示结果不对,求解
已知文件中存有一组已按从小到大排序的一组数,下面程序的功能是:将从键盘输入的一个数插入到文件中,使文件中的数还能保持从小到大的顺序不变。

#include<stdio.h>
  struct data {int x;struct data *next;};
main()
{FILE *fp;
 struct data *head,*p1,*p2,*p;
if((fp=fopen("A.txt","r"))==NULL) {printf("error");getch();exit();};
 head=p2=NULL;
 while(!feof(fp))
  { p1=p2=head=(struct sata *)malloc(sizeof(struct data));
   fscanf(fp,"%d",&p1->x);printf("%d ",p1->x);
   if(head==NULL) head=p1;
   else p2->next=p1;
    p2=p1;
  }
     p2->next=NULL; fclose(fp);
   printf("\nInput a data:");

 p=(struct data*)malloc(sizeof(struct data));
 scanf("%d",&p->x);   p1=head;
 while(p1!=NULL)
  {  if(p1->x>p->x)break;
   p2=p1;p1=p1->next;    }

 if(p1==head){head=p;p->next=p1;}
 else {p->next=p1;p2->next=p;}
 fp=fopen("A.txt","w");
 p1=head;
 while(p1!=NULL)   {printf("%d ",p1->x);fprintf(fp,"%d ",p1->x);p1=p1->next;}
 fclose(fp);  

getch();}
搜索更多相关主题的帖子: head next include 
2012-02-19 21:51
粉jj
Rank: 2
等 级:论坛游民
威 望:1
帖 子:123
专家分:82
注 册:2011-3-8
收藏
得分:0 
  有没有路过的??
2012-02-21 21:30
ckang2000000
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-2-20
收藏
得分:0 
新手路过。。
2012-02-22 00:15
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
提个小小的建议,你写的程序能不能工整一些?另外加上注解?我把你的程序看了半天,没明白您的意图.
2012-02-22 01:11
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
收藏
得分:0 
看来楼主也学了动态链表这一块儿了,我也写了一个,也是编译没错但执行时却执行不了,还纠结呢现在
2012-02-22 09:06
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:0 
自己多调试才是王道啊

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-02-22 09:35
粉jj
Rank: 2
等 级:论坛游民
威 望:1
帖 子:123
专家分:82
注 册:2011-3-8
收藏
得分:0 
回复 6楼 BianChengNan
求指点....
2012-02-22 16:52
新手菜鸟鸟
Rank: 2
等 级:论坛游民
帖 子:37
专家分:57
注 册:2012-1-15
收藏
得分:0 
最近也在纠结链表
2012-02-22 22:35
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
帮您改完了,您和您的程序对照一下,就会知道错在哪里了.
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct data
{
    int x;
    struct data *next;
}data;

int main(void)
{
    FILE *fp;
    data *head,*p1,*p2,*p;
    if((fp=fopen("A.txt","r"))==NULL) //打开文件
    {
        printf("error");
        //getch();
        exit(1);
    };
    head=p1=p2=NULL;//初始化指针
    while(1)//读取文件
    {
        if(feof(fp))
        {
            p1->next=NULL;
            break;
        }
        p1=(data *)malloc(sizeof(data));//申请内存
        fscanf(fp,"%d",&p1->x);//读取文件中的数据
        printf("%d ",p1->x);//打印数据
        if(!head)   //当读取第一个数据时
            head=p2=p1; //头指针
        else
        {
            p2->next=p1;
            p2=p1;
        }
    }
    //p1->next=NULL;
    fclose(fp);//释放内存
    printf("\nInput a data:");
    p=(data*)malloc(sizeof(data));//申请内存
    scanf("%d",&p->x);   //输入数据
    p1=head; //打开链表,编入数据
    while(p1)
    {
        if(p1->x>p->x)//找到插入的节点
            break;
        p2=p1;
        p1=p1->next;
    }
    if(p1==head)
    {
        head=p;
    }
    else
    {
        p2->next=p;
    }
    p->next=p1;
    fp=fopen("A.txt","w");
    p1=head;
    while(p1)
    {
        printf("%d ",p1->x);
        fprintf(fp," %d",p1->x);
        p1=p1->next;
    }
    puts("");
    fclose(fp);

    return 0;
}

收到的鲜花
  • smallmoon5212012-02-23 08:05 送鲜花  10朵   附言:好人啊,支持
2012-02-23 01:13
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:0 
支持 广陵绝唱 ,但是一定要养成多调试的习惯啊,兄弟们。切身体会啊,问题自己解决出来,印象才会更深刻

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-02-23 11:10
快速回复:这一串代码编译成功,但是显示结果不对,求解
数据加载中...
 
   



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

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