标题:求助,搞不懂为啥这样的???
只看楼主
Benthy2
Rank: 1
等 级:新手上路
帖 子:25
专家分:7
注 册:2011-12-16
结帖率:66.67%
已结贴  问题点数:8 回复次数:5 
求助,搞不懂为啥这样的???
各位大侠,帮我看一下下面的gets(q->name)为什么在程序执行时被跳过了

#include<stdio.h>
#include<stdlib.h>
//#include<conio.h>;


typedef struct studentsinformation
{
    char name[20];
    char munber[15];
    float total;
    struct studentsinformation *next;
}SDI;

//基本操作
SDI *initlist()
{
     SDI *head=NULL,*p=NULL,*q=NULL;
     int m=0,i=0;
     
     p=(SDI *)malloc(sizeof(SDI));
     head=p;

     printf("输入要构建的结点个数\n");
     scanf("%d",&m);

     for(i=m;i>0;--i)
     {   
         q=(SDI *)malloc(sizeof(SDI));
         printf("第%d结点\n",m+1-i);
         
         gets(q->name);printf("继续\n");//scanf("%f",&q->total);
         gets(q->munber);
         
         p->next=q; p=q;  
     }
     return head;
}

void listdiaplay(SDI *head)
{
    SDI *p=NULL;

    p=head;//->next;
    p=p->next;
    while(p)
    {
        printf("%s %s %f\n",p->name,p->munber,p->total);
        p=p->next;
    }
}

void main()
{
    SDI *sel1=NULL;

    sel1=initlist();

    printf("输出结点信息\n");
    //getch();
    listdiaplay(sel1);
}
搜索更多相关主题的帖子: head include name 
2012-04-05 21:44
欧阳夏枫
Rank: 1
等 级:新手上路
帖 子:2
专家分:5
注 册:2012-4-5
得分:3 
你仔细和你的对照一下,我只改动了一点

#include<stdio.h>
#include<stdlib.h>
typedef struct studentsinformation
{
    char name[20];
    char munber[15];
    float total;
    struct studentsinformation *next;
}SDI;
SDI *initlist()
{
     SDI *head=NULL,*p=NULL,*q=NULL;
     int m=0,i=0;
     
     p=(SDI *)malloc(sizeof(SDI));
     head=p;

     printf("输入要构建的结点个数\n");
     scanf("%d",&m);

     for(i=m;i>0;--i)
     {   
         q=(SDI *)malloc(sizeof(SDI));
         printf("第%d结点\n",m+1-i);
         
         gets(q->name);printf("继续\n");//scanf("%f",&q->total);
         gets(q->munber);
         
         p->next=q; p=q;  
     }
     return head;
}

void listdiaplay(SDI *head)
{
    SDI *p=NULL;

    p=head;//->next;
    p=p->next;
    while(p)
    {
        printf("%s %s %f\n",p->name,p->munber,p->total);
        p=p->next;
    }
}
int main()
{
    SDI *sel1=NULL;

    sel1=initlist();

    printf("输出结点信息\n");
    //getch();
    listdiaplay(sel1);
    system("pause");
}
2012-04-05 22:09
Benthy2
Rank: 1
等 级:新手上路
帖 子:25
专家分:7
注 册:2011-12-16
得分:0 
回复 2楼 欧阳夏枫
还是老样子
2012-04-07 12:56
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:3 
scanf("%d",&m);
     getchar();

我们都在路上。。。。。
2012-04-07 13:13
Benthy2
Rank: 1
等 级:新手上路
帖 子:25
专家分:7
注 册:2011-12-16
得分:0 
知道了,用一下flushall函数就OK!
2012-04-07 13:19
tianjigezhu
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2012-4-7
得分:0 
scanf函数不会读取你所按下的回车符。
在scanf("%d", &m)后面加上一个getchar()试试看

 printf("输入要构建的结点个数\n");
     scanf("%d",&m);

     for(i=m;i>0;--i)
     {   
         q=(SDI *)malloc(sizeof(SDI));
         printf("第%d结点\n",m+1-i);
         
         gets(q->name);printf("继续\n");//scanf("%f",&q->total);
         gets(q->munber);
         
         p->next=q; p=q;  
}
2012-04-07 13:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-365232-1-1.html




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

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