I have this code to sort a linked list which asks the user to add nodes to the lists till the user presses y or Y. But what is happening currently is that after insertion of one node the program moves ahead without waiting for the input from the user. Is it that i am doing something wrong when asking input from the user.

[insert]
Code:
#include <stdio.h>
#include <stdlib.h>

struct node
{
	int data;
	struct node* link;
} *start;

void addatend(struct node**, int);
void display(struct node*);
int count(struct node*);
void selection_sort(int);
void bubble_sort(int);
void getdata();

int main(void)
{
	int n;

	getdata();
	display(start);
	n = count(start);

	selection_sort(n);
	display(start);
	n = count(start);

	getdata();
	display(start);
	n = count(start);

	bubble_sort(n);
	display(start);
	n = count(start);

	return 0;
}


void getdata()
{
	struct node *newnode;
	int val;
	char ch;
	newnode = NULL;

	do
	{
		printf("\nEnter the value");
		scanf("%d", &val);

		addatend(&newnode, val);

		printf("\nAny more nodes");
		ch = getchar();
	}while (ch == 'y' || ch == 'Y');
	
	start = newnode;
	
}


void addatend(struct node **q, int data)
{	

	struct node *temp;
	temp = *q;

	if(*q == NULL)
	{
		// adding the first node
		*q = malloc(sizeof(struct node));
		temp = *q;
	}

	else
	{
		// go to last node
		while(temp ->link != NULL)
			temp = temp->link;

		temp->link = malloc(sizeof(struct node));
		temp = temp->link;
	}

	temp ->data = data;
	temp ->link = NULL;
}

void display (struct node *q){

	int i = 0;
	struct node *temp;

	temp = q;
	while (temp != NULL){
		printf("\nThe data at loc %d is %d", i , temp ->data);
		temp = temp->link;
		i++;
	}
}

int count (struct node *q){

	struct node *temp;
	int count = 0;

	temp = q;
	while (temp != NULL){
		++count;
		temp = temp -> link;
	}

	printf("\nCount %d", count);
	return count;
}

void selection_sort(int n)
{
	int i,j,temp;
	struct node *p, *q;

	p = start;
	for(i = 0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(p->data > q->data)
			{
				temp = p->data;
				p->data = q->data;
				q->data = temp;
			}
			q = q->link;
		}
		p= p->link;
	}
}

void bubble_sort(int n)
{
	int i,j,k, temp;
	struct node *p,*q;

	for(i = 0;i<n-1;i++)
	{
		p = start;
		q = p->link;

		for(j=1;j<n;j++)
		{
			if(p->data > q->data)
			{
				temp = p->data;
				p->data = q->data;
				q->data = temp;
			}
			p= p->link;
			q= q->link;
		}
	}
}