#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
int main()
{
char script_path[] = "/home/anonimas/test.c";
FILE *script_file;
script_file
= fopen(script_path
, "r"); if (script_file == NULL)
{
return 0;
}
//Динамический двумерный массив
char **script_inmem = NULL;
unsigned int let = 0; //Прядковый номер знака
unsigned int str = 0; //Номер строки
script_inmem
= (char**)malloc(sizeof(char*)); script_inmem
[0] = (char*)malloc(sizeof(char)); if (!script_inmem)
{
printf ("Malloc: error allocate memory"); return 0;
}
//Цикл считывания файла
while (!feof(script_file
)) {
char buffer = NULL;
//Цикл считывания строки из файла
while (!(buffer == '\n'))
{
buffer
= getc(script_file
); script_inmem[str][let] = buffer;
printf("%c", script_inmem
[str
][let
]); let++;
script_inmem
[str
] = (char*)realloc(script_inmem
[str
], (let
+1)*sizeof(char)); // Добавляем памяти для знака в строке if (!script_inmem)
{
printf ("Realloc: error allocate memory"); return 0;
}
}
str++;
script_inmem
= (char**)realloc(script_inmem
, (str
+1)*sizeof(char*)); //Добовляем памяти для строки if (!script_inmem)
{
printf ("Realloc: error allocate memory"); return 0;
}
let = 0;
}
return 1;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKaW50IG1haW4oKQp7CgljaGFyIHNjcmlwdF9wYXRoW10gPSAiL2hvbWUvYW5vbmltYXMvdGVzdC5jIjsKCglGSUxFICpzY3JpcHRfZmlsZTsKCXNjcmlwdF9maWxlID0gZm9wZW4oc2NyaXB0X3BhdGgsICJyIik7CglpZiAoc2NyaXB0X2ZpbGUgPT0gTlVMTCkKCXsKCQlwcmludGYoIkNhbid0IG9wZW4gZmlsZSIpOwoJCXJldHVybiAwOwoJfQoKCS8v0JTQuNC90LDQvNC40YfQtdGB0LrQuNC5INC00LLRg9C80LXRgNC90YvQuSDQvNCw0YHRgdC40LIKCWNoYXIgKipzY3JpcHRfaW5tZW0gPSBOVUxMOwoJdW5zaWduZWQgaW50IGxldCA9IDA7IC8v0J/RgNGP0LTQutC+0LLRi9C5INC90L7QvNC10YAg0LfQvdCw0LrQsAoJdW5zaWduZWQgaW50IHN0ciA9IDA7IC8v0J3QvtC80LXRgCDRgdGC0YDQvtC60LgKCXNjcmlwdF9pbm1lbSA9IChjaGFyKiopbWFsbG9jKHNpemVvZihjaGFyKikpOwoJc2NyaXB0X2lubWVtWzBdID0gKGNoYXIqKW1hbGxvYyhzaXplb2YoY2hhcikpOwoJaWYgKCFzY3JpcHRfaW5tZW0pCgl7CgkJcHJpbnRmICgiTWFsbG9jOiBlcnJvciBhbGxvY2F0ZSBtZW1vcnkiKTsKCQlyZXR1cm4gMDsKCX0KCS8v0KbQuNC60Lsg0YHRh9C40YLRi9Cy0LDQvdC40Y8g0YTQsNC50LvQsAoJd2hpbGUgKCFmZW9mKHNjcmlwdF9maWxlKSkKCXsKCQljaGFyIGJ1ZmZlciA9IE5VTEw7CgkJLy/QptC40LrQuyDRgdGH0LjRgtGL0LLQsNC90LjRjyDRgdGC0YDQvtC60Lgg0LjQtyDRhNCw0LnQu9CwCgkJd2hpbGUgKCEoYnVmZmVyID09ICdcbicpKQoJCXsKCQkJYnVmZmVyID0gZ2V0YyhzY3JpcHRfZmlsZSk7CgkJCXNjcmlwdF9pbm1lbVtzdHJdW2xldF0gPSBidWZmZXI7CgkJCXByaW50ZigiJWMiLCBzY3JpcHRfaW5tZW1bc3RyXVtsZXRdKTsKCQkJbGV0Kys7CgkJCXNjcmlwdF9pbm1lbVtzdHJdID0gKGNoYXIqKXJlYWxsb2Moc2NyaXB0X2lubWVtW3N0cl0sIChsZXQrMSkqc2l6ZW9mKGNoYXIpKTsgLy8g0JTQvtCx0LDQstC70Y/QtdC8INC/0LDQvNGP0YLQuCDQtNC70Y8g0LfQvdCw0LrQsCDQsiDRgdGC0YDQvtC60LUKCQkJaWYgKCFzY3JpcHRfaW5tZW0pCgkJCXsKCQkJCXByaW50ZiAoIlJlYWxsb2M6IGVycm9yIGFsbG9jYXRlIG1lbW9yeSIpOwoJCQkJcmV0dXJuIDA7CgkJCX0KCQl9CgkJc3RyKys7CgkJc2NyaXB0X2lubWVtID0gKGNoYXIqKilyZWFsbG9jKHNjcmlwdF9pbm1lbSwgKHN0cisxKSpzaXplb2YoY2hhciopKTsgLy/QlNC+0LHQvtCy0LvRj9C10Lwg0L/QsNC80Y/RgtC4INC00LvRjyDRgdGC0YDQvtC60LgKCQlpZiAoIXNjcmlwdF9pbm1lbSkKCQl7CgkJCXByaW50ZiAoIlJlYWxsb2M6IGVycm9yIGFsbG9jYXRlIG1lbW9yeSIpOwoJCQlyZXR1cm4gMDsKCQl9CgkJbGV0ID0gMDsKCX0KCQoJZmNsb3NlKHNjcmlwdF9maWxlKTsKCWZyZWUoc2NyaXB0X2lubWVtKTsKCXJldHVybiAxOwp9