Примерно так будет работать.
size_t num_user_data = 0;
char** user_data = NULL;
char user_input[100] = {0} // don't use magic numbers in your code...;
while ( (gets(user_input)) && user_input[0] != '\n' ) {
num_user_data += 1;
user_data = realloc(user_data, sizeof(char*) * num_user_data);
user_data[num_user_data-1] = strdup(user_input);
}
// You need to free user_data and user_data[i] somewhere...
user_data[i][j]
даст вам символ j из i-го введенного предложения.