getchar()不接受输入

getchar()不接受输入,c,input,C,Input,我正在写一个程序来实现C语言中的链表。这是我的程序 /*Implementing a singly linked list in c*/ #include<stdio.h> #include<stdlib.h> #include<alloca.h> struct node{ int data; struct node* link; }*start=NULL; void main(){ char choice; in

我正在写一个程序来实现C语言中的链表。这是我的程序

/*Implementing a singly linked list in c*/
#include<stdio.h>
#include<stdlib.h>
#include<alloca.h>

   struct node{

    int data;
   struct node* link;
}*start=NULL;


void main(){

    char choice;
    int data;

    do{

        printf("Enter data\n");
        scanf("%d",&data);

        struct node* temp;
        temp=(struct node*)malloc(sizeof(struct node));
        temp->data=data;
        temp->link=NULL;

        if(start==NULL)
            start=temp;
        else
        {
            struct node* traversing_pointer;
            traversing_pointer=start;
            while(traversing_pointer!=NULL)
                traversing_pointer=traversing_pointer->link;

            traversing_pointer->link=temp;

        }
         printf("Do you want to enter more");
 choice=getchar();        

    }
    while(choice=='y'|| choice=='Y');}

可能的错误是什么?

这是因为您的
getchar
通过在
45
输入之后按Enter键来读取您输入的行尾。

这是因为您的
getchar
通过在
45
输入之后按Enter键来读取您输入的行尾。

使用您输入的换行符输入流,请执行以下操作:

scanf("%d",&data);
getchar(); //To consume a newline 
或者使用循环读取所有换行符

scanf("%d",&data);
int c=0;
while ((c = getchar()) != '\n' && c != EOF) ; // Read & ignore all newlines
我看到的另一个问题是没有正确链接节点。您希望将新节点链接为最后一个节点。因此,必须遍历到最后一个节点(直到到达NULL)。将循环条件更改为:

while(traversing_pointer->link!=NULL)
    traversing_pointer=traversing_pointer->link;

traversing_pointer->link=temp;

要使用输入流中的换行符,请执行以下操作:

scanf("%d",&data);
getchar(); //To consume a newline 
或者使用循环读取所有换行符

scanf("%d",&data);
int c=0;
while ((c = getchar()) != '\n' && c != EOF) ; // Read & ignore all newlines
我看到的另一个问题是没有正确链接节点。您希望将新节点链接为最后一个节点。因此,必须遍历到最后一个节点(直到到达NULL)。将循环条件更改为:

while(traversing_pointer->link!=NULL)
    traversing_pointer=traversing_pointer->link;

traversing_pointer->link=temp;

在stackoverflow中,我们需要一个新的
标记
,专门用于scanf()后的
getchar()悲伤情况
主题。值
10
用于
\n
(按下“Enter”键后的换行符)
scanf()
没有使用它,因此它是缓冲区中下一个可用的字符,并且
getchar()
将其拾取。我们需要stackoverflow中的一个新的
标记
,专门用于在scanf()悲惨的情况下
getchar()这个主题。值
10
用于
\n
(按“Enter”键时的换行符)。
scanf()
没有使用它,因此它是缓冲区中的下一个可用字符,并且
getchar()
拾取它。使用另一个
getchar
:)我只需在
printf()
语句和
choice=getchar()
语句之间放置一个“getchar()”。它在一个步骤中运行良好,但随后出现了分段错误。这是您的另一个问题,超出了此问题的范围。使用另一个
getchar
:)我只需在
printf()
语句和
choice=getchar()
语句之间放置一个“getchar()”。它在一个步骤中运行良好,但随后出现了分段错误。这是您的另一个问题,超出了这个问题的范围。