Я делал программу для ввода чисел в стек, а цикл do-while был автоматически завершен, не дожидаясь ответа. Следовательно, были сделаны и отображены только одна информация.Программа автоматически завершается, не дожидаясь ответа. Зачем?
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
typedef struct node NODE;
NODE *top = NULL;
void push(int x)
{
NODE *p;
p = (NODE*)malloc(sizeof(NODE));
p->data = x;
p->next = top;
top = p;
}
void display(void)
{
NODE *t;
t = top;
if(t == NULL)
{
printf("\nstack is empty");
}
else
{
while(t != NULL)
{
printf("%d ", t->data);
t = t->next;
}
}
}
int main(void)
{
int m;
char ans;
do
{
printf("\nEnter the no. to insert in stack: \n");
scanf("%d", &m);
push(m);
printf("\nDo you want to enter more data???\n");
scanf("%c", &ans);
} while(ans == 'y' || ans == 'Y'); // here after entering a value for variable 'm', the program terminates displaying the stack with one element.
display();
return 0;
}
'зсапЕ ("% С", &ans);' -> 'зсапЕ ("% С", &ans);' Обратите внимание на дополнительное пространство, которое потребляет 'newline', который был оставлен во входном буфере после того, как' зсапЕ («% d», &m); «» –
Должен ли я использовать этот метод всякий раз, когда я использую один «скаффикс» после другого? – Sudeep
Пожалуйста, см. мой ответ. –