gpt4 book ai didi

C语言编程-字符链表实现

转载 作者:行者123 更新时间:2023-11-30 20:31:24 25 4
gpt4 key购买 nike

我的代码:

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

struct node{
char data;
struct node *next;
};

void main()
{ char A;
struct node *head,*ptr;
ptr=(struct node *)malloc(sizeof(struct node));
printf("Enter data for node 1 \n");
scanf("%c",&ptr->data);
head=ptr;
int i=2;
while(1)
{
ptr->next=(struct node*)malloc(sizeof(struct node));
ptr=ptr->next;
printf("\nEnter data for node %d:::\n",i);
scanf("%c",&ptr->data);
ptr->next=NULL;
i=i+1;
printf("Do you want to continue Y OR N");
scanf("%c",&A);
if(A=='Y')
continue;
else
break;

}

struct node *temp;

temp=head;
while(temp!=NULL)
{
printf("%c=>",temp->data);
temp=temp->next;
}
printf("NULL");





}

对于这段代码,我只能输入第一个字符数据,之后它会跳过 while 循环中的 scanf 部分。但是当我用整数执行相同的代码时,它给了我正确的输出。在这里,如果我替换相同的代码而不是字符,我将其替换为整数,它可以正常工作。我找不到解决方法。请帮忙。

最佳答案

正如评论中所述,您的问题不在于链表实现,而在于此处的代码行。

scanf("%c",&ptr->data);    //line number 14

scanf("%c",&ptr->data); //line number 22

scanf("%c",&A); //line number 26

在所有这些行中,%c 使用换行符(\n)而不是用户输入。

要解决此问题,您可以在 %c 前面放置一个空格,如下所示,

scanf(" %c",&ptr->data);    //line number 14

scanf(" %c",&ptr->data); //line number 22

scanf(" %c",&A); //line number 26

关于C语言编程-字符链表实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51151146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com