Q:

how to take input of two string?

#include <stdio.h>
#include<stdlib.h>
#include <string.h>
int main(void) {
    char a[1001];
    int t,i;
    scanf("%d",&t);

    while(t--)
    {
        fflush(stdin);
        gets(a);
        printf("%d\t",t);
        puts(a);

    }
    return 0;
}

Input:
2 
die another day.
i'm batman.

Ouput:
1   
0   die another day.

Expected Output:
1    die another day.
0    i'm batman.

Anyone please help how to accept more than one string without any bugs.
I am able to see after entering 2 my gets is taking newline as first string and later second string properly.
Thanks in advance

A:

Stop using scanf() of stdin to read input. Never call fflush(stdin); either, but if you stop using scanf() you will no longer want to.
Read whole lines using fgets() into suitably-sized string buffers, then parse what you got. One good function for parsing a string is sscanf() which is just like scanf() except it reads from a string instead.
This will be much easier, less annoying, and just generally better. Oh, and of course never use gets().
Something like this (untested):
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  char line[256];

  if(fgets(line, sizeof line, stdin))
  {
    int count;
    if(sscanf(line, "%d", &count) == 1)
    {
      while(count > 0)
      {
        if(fgets(line, sizeof line, stdin))
        {
          printf("%s", line);
          --count;
        }
        else
          break;
      }
    }
  }
  return EXIT_SUCCESS;
}

