#define STR 3
int len_text(char** text){
int i = 0;
while (*(text+i)){
i++;
}
return i;
}
char* get_string(){
int i = 0;
char *str;
str = (char*)malloc(sizeof(char));
while ((*(str + i) = getchar()) != '\n'){
i++;
str = (char*)realloc(str, (i + 1) * sizeof(char));
}
*(str + i) = '\0';
return str;
}
int main(){
int j = 0, i = 0;
text = (char**)malloc(sizeof(char*));
do{
j = 0;
text[i] = (char*)malloc(sizeof(char));
text[i][j] = (char)malloc(sizeof(char));
*(text + i) = get_string();
i++;
text = (char**)realloc(text, (i + 1) * sizeof(char*));
} while (i < STR);
printf("%d", len_text(text));
rerurn 0;
}
Текст должен вводится до определенного условия, i STR это частный случай.
Функция len_text работает не совсем правильно, она возвращает неверное количество строк, в чем может быть проблема?
Как сделать это более грамотно, с точки зрения этики программирования?