噫吁汐 2022-01-10 20:53 采纳率: 95%
浏览 38
已结题

c语言,输出链表无输出值


#include<stdio.h>
#include<stdlib.h>
struct demo
{
    char str[15];
    struct damo* pnext;
};
struct demo* create()
{
    struct demo* pnew,*pend,*phead;
    pnew=pend=(struct demo*)malloc(sizeof(struct demo));
    phead=pnew;
    printf("请输入文字");
    scanf("%s",phead->str);
    if(*(phead->str)!="\n");
    {
        for(;;)
        {
            pnew=(struct demo*)malloc(sizeof(struct demo));
            pend->pnext=pnew;
            printf("请输入文字");
            scanf("%s",pnew->str);
            if(*(pend->str)=="\n")
            {
                break;
            }
            pend=pnew;
        }
    }
    pend->pnext=NULL;
    return phead;
}
void main()
{
    struct demo* phead;
    struct demo* pprint;
    phead=create();
    printf("\n输出为:\n");
    pprint=phead;
    printf("%s",*(pprint->str));
    for(;;)
    {
        pprint=pprint->pnext;
        printf("%s",*(pprint->str));
        if(pprint==NULL)
        {
            break;
        }
        
    }
    
}

链表可以正常输入,但是当输入回车退出输入的循环后,就无法正常输出了,求解答,谢谢

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-01-10 21:15
    关注
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    struct demo
    {
        char str[15];
        struct demo *next;
    };
    
    struct demo *create()
    {
        struct demo *head = NULL;
        struct demo *tail = NULL;
        char buffer[15];
        while (scanf("%s", buffer) == 1) // Read input till EOF (i.e. Ctrl+D (Linux) / Ctrl+Z (Windows))
        {
            struct demo *p = (struct demo *)malloc(sizeof(struct demo));
            strcpy(p->str, buffer);
            p->next = NULL;
            if (!head)
                head = p;
            if (tail)
                tail->next = p;
            tail = p;
        }
        return head;
    }
    
    void print(struct demo *head)
    {
        while (head)
        {
            printf("%s\n", head->str);
            head = head->next;
        }
    }
    
    void destroy(struct demo *head)
    {
        while (head)
        {
            struct demo *p = head;
            head = head->next;
            free(p);
        }
    }
    
    int main()
    {
        struct demo *head = create();
        print(head);
        destroy(head);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月19日
  • 已采纳回答 1月11日
  • 创建了问题 1月10日

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码