I'm trying to read user input and store it as a string including the whitespace. I did a search for a solution and was pointed to fgets() or scanf(%[^\n], str). But both these solutions give me an error.
This is what I have:
//MAX_CHARACTERS is set to 30
 scanf("%d", &input);
 if (input == 1){
        int pr;
        char na[MAX_CHARACTERS+1];
        printf("\nEnter the name: ");
        scanf("%[^\t\n]", &na);
        while (strlen(na)>MAX_CHARACTERS){
            printf("\nName is too long, enter new name: ");
            scanf("%[^\t\n]", &na);
        }// end na check
        printf("\nEnter priority: ");
        scanf("%d", &pr);
        while (pr>MAX_PRIORITY || pr <MIN_PRIORITY){
            printf("\nBad priority, enter new priority (0-100): ");
            scanf("%d", &pr);
        }//end pr check
It works fine if I use %s in all instances of %[^\t\n]  but when I use %[^\t\n] or 
fgets(na, 30, stdin), it skips the first scanf for name and goes straight to "Enter priority: ".  Then when I print, I have a blank name with whatever priority I entered.
EDIT: Sorry, the missing quotes on the first scanf is a typo. Not a cause of the problem. I typed in '1' for the first scanf("%d", input).
FIXED IT
Since it won't let me post an answer yet,
Someone figured it out. Incase anyone's still interested, the problem was the first scanf().
scanf("%d", &input);
It is leaving a \n in the buffer. The second one is taking the \n and reading it as an input so it gets skipped.
SOLUTION:
Putting a
fflush(stdin); //right after the if statement seems to have fixed the issue. 
Thanks for everyone's help.
 
     
     
     
     
    