Attenzione a non sforare i limiti con le stringhe, bisogna sempre prevedere il terminatore '\0', e controllare di non assegnare più stringhe di quante ne siano allocate.

codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXSTRLENGTH 10
#define MAXSTRNUMBER 10

int main()
{
    char vett[MAXSTRNUMBER][MAXSTRLENGTH+1];
    char str[2048];
    int count=0;
    int end=0;
    int i, len;
    do
    {
        printf("Stringa %d: ", count+1) ;
        gets(str) ;
        len = strlen(str);
        if( len==0 )
            printf("La stringa e' vuota ripeti:\n");
        else if( len>MAXSTRLENGTH )
            printf("La stringa e' troppo lunga!\n") ;
        else if (strcmpi(str, "fine")==0)
            end = 1;
        else
        {
            strcpy( vett[count], str );
            count++;
            if( count == MAXSTRNUMBER )
                end = 1;
        }
    }
    while(end==0);
    
    for( i=0; i<MAXSTRNUMBER; i++)
        printf("%d) \"%s\"\n", i, vett[i] );
    
    printf("\nFine");
    getchar();
    return 0;
}