двумерный динамический массив c
Создаю двумерный массив по мере того как пользователь вводит символ яерез getchar. программа раблтает корректно если вводить до 10 слов. если ввести 10 или больше программа выводит непонятные символы. в чем проблема
#include<stdio.h>
#include<stdlib.h>
int x=0;
void my_array(char** words,char** str,char* tmp){
int len=0,z=0;
char c;
while ((c = getchar()) != '\n') {
if (words!=NULL){
if (c!=' '){
words[x][len]=c;
tmp = (char*)realloc(words[x],(len+1)*(sizeof(char)));
words[x]=tmp;
len++;
}
else{
words[x][len] = '\0';
str = (char**)realloc(words,(x+1)*(sizeof(char)));
x++;
words=str;
words[x] = (char*)malloc(sizeof(char));
len=0;
}
}
}
if (words!=NULL){
words[x][len] = '\0';
}
}
int main() {
char** words=NULL;
char* tmp=NULL;
char** str=NULL;
int z=0;
words = (char**)malloc(sizeof(char));
words[x] = (char*)malloc(sizeof(char));
my_array(words,str,tmp);
for (z=0;z<x+1;z++){
printf("%s ",words[z]);
}
}