标题:一个单向链的问题,为什么输出不正常,谢谢!
取消只看楼主
ericwu1975
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-8-7
结帖率:0
已结贴  问题点数:20 回复次数:1 
一个单向链的问题,为什么输出不正常,谢谢!
#include <stdio.h>
#include <stdlib.h>
struct students
{
    char name[20];
    int age;
    char gender;
    struct students *next;
};
struct students *create();
void printS();
int main (void)
{
    struct students *head;
    head=NULL;
    head=create(head);
    printS(head);
    return 0;   
}
struct students *create(struct students *head)
{
    struct students *tail,*p;
    int i=1;
    char ext[20]="无";
    tail=(struct students *)malloc(sizeof(struct students));
    printf("请输入学生信息,如果姓名为 \"无\" 退出!存放地址为P_%d=add%p\n",i,tail);
    printf("输入格式为了姓名\t年龄\t姓别.\n");
    scanf("%s%d%c",&tail->name,&tail->age,&tail->gender);
    tail->next=NULL;
    while(strcmp(ext,tail->name))
    {
        if (head==NULL)
        head=tail;
        else
        {
            tail->next=p;
            tail=p;
        }
        p=(struct students *)malloc(sizeof(struct students));
        i=i+1;
            //printf("输入格式为了姓名\t年龄\t姓别.\n");
    printf("请输入学生信息,如果姓名为 \"无\" 退出!存放地址为P_%d=add%p\n",i,tail);
    scanf("%s %d %c",&p->name,&p->age,&p->gender);
        
    }
    tail->next=NULL;
    printf("输入学生信息结束!\n\n");
    return head;   
}
void printS(struct students *head)
{
    struct students *temp;
    temp =head;
    printf("输入学生信息为:\n");
    printf("姓名\t年龄\t姓别.\n");
    while(temp)
    {
        printf("%s\t%d\t%c\n",&temp->name,&temp->age,&temp->gender);
        temp=temp->next;
    }
    printf("打印学生信息结束!\n\n");
}
搜索更多相关主题的帖子: include return create 
2016-08-21 13:38
ericwu1975
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-8-7
得分:0 
改好了,谢谢并且存盘。


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct students
{
    char name[20];
    int age;
    char gender;
    struct students *next;
};
struct students *create();
void printS();                       
int main (void)
{
    struct students *head;
    head=NULL;
    head=create(head);
    printS(head);
    return 0;   
}
struct students *create(struct students *head)
{
    struct students *tail,*p;
    int i=1;
    char ext[20]="无";
    p=tail=(struct students *)malloc(sizeof(struct students));      
    printf("请输入学生信息,如果姓名为 \"无\" 退出!存放地址为P_%d=add%p\n",i,tail);
    printf("输入格式为:\n姓名\t年龄\t姓别.\n");
    scanf("%s %d %c%*c",&tail->name,&tail->age,&tail->gender);  //scanf("%s%d*c%c",tail->name,&tail->age,&tail->gender);
    tail->next=NULL;
    while(strcmp(ext,tail->name))  
    {
        if (head==NULL)
        head=tail;
        else
        {
            p->next=tail;            
            p=tail;
        }
        tail=(struct students *)malloc(sizeof(struct students));   
        
        i=i+1;
            //printf("输入格式为了姓名\t年龄\t姓别.\n");
    printf("请输入学生信息,如果姓名为 \"无\" 退出!存放地址为P_%d=add%p\n",i,tail);
    scanf("%s %d %c%*c",&tail->name,&tail->age,&tail->gender);      
        
    }
    free(tail);      
    p->next=NULL;
    printf("输入学生信息结束!\n\n");
    return head;   
}
void printS(struct students *head)
{
    struct students *temp;
    temp =head;
    FILE *f;
    f=fopen("stu.txt","a+");
    printf("输入学生信息为:\n");
    fprintf(f,"输入学生信息为:\n");
    printf("姓名\t年龄\t姓别.\n");
    fprintf(f,"姓名\t年龄\t性别.\n");
    while(temp)                    
    {
       printf("%s\t%d\t%c\n",temp->name,temp->age,temp->gender);        //取址符去掉。
fprintf(f,"%s\t%d\t%c\n",temp->name,temp->age,temp->gender);
        temp=temp->next;
    }
    printf("打印学生信息结束!\n\n");
    fclose(f);
    fflush(f);
}

[此贴子已经被作者于2016-8-22 01:40编辑过]

2016-08-22 01:37



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




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

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