getchar()不接受输入
我正在写一个程序来实现C语言中的链表。这是我的程序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
/*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()”。它在一个步骤中运行良好,但随后出现了分段错误。这是您的另一个问题,超出了这个问题的范围。