Я пишу программу для реализации связанного списка в C.Here - это моя программа.getchar() не принимает ввод
/*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');}
Я в принципе хочу, по крайней мере один узел в связанном списке должен быть создан, поэтому я использую делают, в то время как цикл. Но после первого ввода данных программа завершается без принятия ввода для переменной choice
. Вот мой вывод. Что может быть
Enter data
45
Do you want to enter more
RUN FINISHED; exit value 10; real time: 2s; user: 0ms; system: 0ms
Какая возможная ошибка?
Нам нужен новый 'тег' в stackoverflow, посвященный этой теме' getchar() после scanf() печальной ситуации'. – pablo1977
Значение '10' для' \ n' (символ новой строки от нажатия «Enter»). 'scanf()' не потреблял его, поэтому это следующий доступный символ в буфере, и 'getchar()' выбирает его. – newfurniturey