Я бы преобразовал двоичный файл с одним или несколькими Pascal-Strings в .Txt-файл. Это правильный путь, но он выглядит как ошибка сегментации. Я не понимаю, где проблема. Размер файла 23.Сегментация терпит неудачу? Зачем?
void printFile(char *buffer, char *output_file, int file_size)
{
FILE *out_file = fopen(output_file, "w");
int i = 0;
int j = 1;
int cnt = 0;
int cnt_word = 0;
int block = 4;
while (i < block)
{
cnt = cnt + buffer[i];
i++;
}
while (j <= cnt)
{
while (i < file_size)
{
while (i < (i + block))
{
cnt_word = cnt_word + buffer[i];
i++;
}
while (i < (i + cnt_word))
{
fprintf(out_file, "%c", buffer[i]);
i++;
}
fprintf(out_file, " ");
cnt_word = 0;
j++;
}
}
fclose(out_file);
}
Это в другой функции get filesize
:
fseek(in_file, 0, SEEK_END);
file_size = ftell(in_file);
rewind(in_file);
//allocate memory for buffer
buffer = malloc(file_size);
Вы не видите функцию вызова, поэтому мы не знаем размер «буфера». Скорее всего, вы превысите размер массива. Запустите его в отладчике. – OldProgrammer
Насколько велик буфер? Также с таким количеством циклов while я могу только представить, что один из них бесконечно запускает переполнение стека. –
while (i <(i + block)) может ли это условие выйти из строя? – sukunrt