I did not completely understand what you were trying to do from your original question. When you said you wanted to read in an arbitrary number of strings, I took that to mean, you wanted your program to be able to read 0 to n strings. Unfortunately in C, you will either have to cap off the maximum number of strings you would ever want to read in like 
#define MAX_NUMBER_OF_STRINGS_TO_READ 25, or get into some sophisticated memory allocation scheme to read a string in and then add it to dynamic memory (returned from malloc). 
I took the cap the maximum number of strings approach and wrote the following snippet:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char charArray[5][25] = {0};
int main(int argc, char *argv[])
{
    int in_idx = 0;
    int out_idx = 0;
    printf("\n\n%s\n", "Enter no more than 5 strings, no more than 25 characters long.");
    while(fgets (charArray[in_idx], 25, stdin))
    {
        if('\n' == charArray[in_idx][0])
        {
            printf("%s\n", "Entry terminated with newline.");
            break;
        }
        in_idx++;
    }
    for(out_idx=0; out_idx < (in_idx + 1); out_idx++)
    {
        printf("%s", charArray[out_idx]);
    }
    printf("\n%s\n", "Program ended.");
    return 0;
}
I made the termination character a newline. If I only want two strings, I press Enter when I've entered the second string. I terminated fgets by looking for a '\n' in the first position of the character array.