I have an unusual problem regarding the code below.
void Menu()
{
    bool end = 0;
    int n;
    while (!end)
    {
        scanf("%d", &n);
        switch(n)
        {
            case 1:
                my_strlen_show();
                break;
            //other irrelevant cases 2-6
            case 7:
                end = 1;
                break;
            default:
                printf("ERROR");
                break;
        }
    }       
}
int my_strlen(const char *str)
{
    int count = 0;
    for (; *str != '\0' ; str++)
    {
        count++;
    }
    return count;
}
void my_strlen_show()
{
    
    char tab[1000];
    printf("\n\nEnter a sentence: ");
    gets(tab);
    gets(tab);
    printf("\nWritten sentence has %d characters.\n\n", my_strlen(tab));
    return;
}
I have no idea why I have to write gets(tab) twice to get the program to work properly. When I use it once, my_strlren_show() function executes instantly and shows that the sentence has 0 characters. I am aware that I can use other methods such as a scanf() function inside a for loop, but I am curious why this method works in a peculiar way.
Can anyone explain why that is the case? I would be very thankful.
 
     
     
    