#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void add_symbol(char **line, char symb, int len)
{
int new_size = (len+2)*sizeof(char); //+1 for symbol, +2 for \0
char *line_copy
= (char*) malloc(new_size
); line_copy[len] = symb;
line_copy[len+1] = '\0';
*line
= (char *) realloc(*line
, new_size
); }
void add_row(char ***array, char *line, int rows_amount)
{
*array
= (char**)realloc(*array
, sizeof(char*)*rows_amount
+1); (*array
)[rows_amount
] = (char*) malloc(sizeof(char*)*strlen(line
)); strcpy((*array
)[rows_amount
], line
); }
int main()
{
char input;
char *final_line
= (char*) malloc(sizeof(char)*1); final_line[0] = '\0';
int size = 0;
char **string_array
= (char*) malloc(sizeof(char*)*size
);
{
if (isalnum(input
) || input
== ' ') add_symbol
(&final_line
, input
, strlen(final_line
)); else if (input == '\n'){
add_row(&string_array, final_line, size);
printf("New line: %s\n", final_line
); // final_line[0] = '\0';
size++;
}else printf("Invalid input: %c\n", input
); }
int i;
for (i = 0; i!=size; i++)
{
printf("String array [%i]: %s\n", i
, string_array
[i
]); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8Y3R5cGUuaD4Kdm9pZCBhZGRfc3ltYm9sKGNoYXIgKipsaW5lLCBjaGFyIHN5bWIsIGludCBsZW4pCnsKICAgIGludCBuZXdfc2l6ZSA9IChsZW4rMikqc2l6ZW9mKGNoYXIpOyAvLysxIGZvciBzeW1ib2wsICsyIGZvciBcMAogICAgY2hhciAqbGluZV9jb3B5ID0gKGNoYXIqKSBtYWxsb2MobmV3X3NpemUpOwogICAgc3RyY3B5KGxpbmVfY29weSwgKmxpbmUpOwogICAgbGluZV9jb3B5W2xlbl0gPSBzeW1iOwogICAgbGluZV9jb3B5W2xlbisxXSA9ICdcMCc7CiAgICAqbGluZSA9IChjaGFyICopIHJlYWxsb2MoKmxpbmUsIG5ld19zaXplKTsKICAgIHN0cmNweSgqbGluZSwgbGluZV9jb3B5KTsKICAgIGZyZWUobGluZV9jb3B5KTsKfQp2b2lkIGFkZF9yb3coY2hhciAqKiphcnJheSwgY2hhciAqbGluZSwgaW50IHJvd3NfYW1vdW50KQp7CiAgICAqYXJyYXkgPSAoY2hhcioqKXJlYWxsb2MoKmFycmF5LCBzaXplb2YoY2hhciopKnJvd3NfYW1vdW50KzEpOwogICAgKCphcnJheSlbcm93c19hbW91bnRdID0gKGNoYXIqKSBtYWxsb2Moc2l6ZW9mKGNoYXIqKSpzdHJsZW4obGluZSkpOwogICAgc3RyY3B5KCgqYXJyYXkpW3Jvd3NfYW1vdW50XSwgbGluZSk7Cn0KaW50IG1haW4oKQp7CiAgICBjaGFyIGlucHV0OwogICAgY2hhciAqZmluYWxfbGluZSA9IChjaGFyKikgbWFsbG9jKHNpemVvZihjaGFyKSoxKTsKICAgIGZpbmFsX2xpbmVbMF0gPSAnXDAnOwogCiAgICBpbnQgc2l6ZSA9IDA7CiAgICBjaGFyICoqc3RyaW5nX2FycmF5ID0gKGNoYXIqKSBtYWxsb2Moc2l6ZW9mKGNoYXIqKSpzaXplKTsKIAogICAgd2hpbGUgKChpbnB1dCA9IGdldGNoYXIoKSkgIT0gJzAnKQogICAgewogICAgICAgIGlmIChpc2FsbnVtKGlucHV0KSB8fCBpbnB1dCA9PSAnICcpCiAgICAgICAgICAgIGFkZF9zeW1ib2woJmZpbmFsX2xpbmUsIGlucHV0LCBzdHJsZW4oZmluYWxfbGluZSkpOwogICAgICAgIGVsc2UgaWYgKGlucHV0ID09ICdcbicpewogICAgICAgICAgICBhZGRfcm93KCZzdHJpbmdfYXJyYXksIGZpbmFsX2xpbmUsIHNpemUpOwogICAgICAgICAgICBwcmludGYoIk5ldyBsaW5lOiAlc1xuIiwgZmluYWxfbGluZSk7IC8vCiAgICAgICAgICAgIGZpbmFsX2xpbmVbMF0gPSAnXDAnOwogICAgICAgICAgICBzaXplKys7CiAgICAgICAgfWVsc2UgcHJpbnRmKCJJbnZhbGlkIGlucHV0OiAlY1xuIiwgaW5wdXQpOwogICAgfQogICAgZnJlZShmaW5hbF9saW5lKTsKICAgIGludCBpOwogICAgZm9yIChpID0gMDsgaSE9c2l6ZTsgaSsrKQogICAgewogICAgICAgIHByaW50ZigiU3RyaW5nIGFycmF5IFslaV06ICVzXG4iLCBpLCBzdHJpbmdfYXJyYXlbaV0pOwogICAgICAgIGZyZWUoc3RyaW5nX2FycmF5W2ldKTsKICAgIH0KICAgIGZyZWUoc3RyaW5nX2FycmF5KTsKICAgIHJldHVybiAwOwp9