```void process_text_multi_line(FILE *input, FILE *output, bool use_color, int start_line, int end_l
void process_text_multi_line(FILE *input, FILE *output, bool use_color, int start_line, int end_line) {
const char *color_code = use_color ? "\x1b[35m" : "";
const char *color_reset = use_color ? "\x1b[0m" : "";
fseek(input, 0, SEEK_END);
long fsize = ftell(input);
rewind(input);
char *data = malloc(fsize + 1);
fread(data, 1, fsize, input);
data[fsize] = '\0';
char *formatted_text = malloc((fsize + 1) * sizeof(char) * 5);
int formatted_index = 0;
int line_count = 1;
bool within_range = (start_line <= line_count && line_count <= end_line);
for (int i = 0; i < fsize; ++i) {
if (data[i] == '\n') {
line_count++;
within_range = (start_line <= line_count && line_count <= end_line);
formatted_text[formatted_index++] = data[i];
} else if (within_range && isdigit(data[i])) {
int card_length = 0;
int segment_length = 0;
int start_index = i;
// Проверяем длину номера карты, учитывая цифры и дефисы
while (i < fsize && (isdigit(data[i]) || data[i] == '-' || data[i] == '\n')) {
if (isdigit(data[i])) {
card_length++;
}
if (card_length > 19) {
break; // Прекращаем, если последовательность длиннее номера карты
}
segment_length++;
i++;
// Проверяем, продолжается ли номер карты на следующей строке
if (data[i] == '\n' && isdigit(data[i+1])) {
segment_length++; // Включаем символ новой строки в сегмент для форматирования
i++;
}
}
void process_text_multi_line(FILE *input, FILE *output, bool use_color, int start_line, int end_line) {
const char *color_code = use_color ? "\x1b[35m" : "";
const char *color_reset = use_color ? "\x1b[0m" : "";
fseek(input, 0, SEEK_END);
long fsize = ftell(input);
rewind(input);
char *data = malloc(fsize + 1);
fread(data, 1, fsize, input);
data[fsize] = '\0';
char *formatted_text = malloc((fsize + 1) * sizeof(char) * 5);
int formatted_index = 0;
int line_count = 1;
bool within_range = (start_line <= line_count && line_count <= end_line);
for (int i = 0; i < fsize; ++i) {
if (data[i] == '\n') {
line_count++;
within_range = (start_line <= line_count && line_count <= end_line);
formatted_text[formatted_index++] = data[i];
} else if (within_range && isdigit(data[i])) {
int card_length = 0;
int segment_length = 0;
int start_index = i;
// Проверяем длину номера карты, учитывая цифры и дефисы
while (i < fsize && (isdigit(data[i]) || data[i] == '-' || data[i] == '\n')) {
if (isdigit(data[i])) {
card_length++;
}
if (card_length > 19) {
break; // Прекращаем, если последовательность длиннее номера карты
}
segment_length++;
i++;
// Проверяем, продолжается ли номер карты на следующей строке
if (data[i] == '\n' && isdigit(data[i+1])) {
segment_length++; // Включаем символ новой строки в сегмент для форматирования
i++;
}
}
0 Replies