Revise your input function as follows
What's happening is this. There is a newline at the end of your buffer which scanf never consumes. So the part after you give the error message should throw away all characters up to and including the newline.
unsigned long getNum(char prompt)
unsigned long darts;
while((scanf("%lu", &darts)) != 1)
printf("\n\nThis is not an acceptable entry. please try again.\n");
while ((c = getchar()) != '\n' && c != EOF)