Как использовать malloc при вызове strcat ()? - PullRequest
0 голосов
/ 25 сентября 2019

Я пишу небольшую программу для копирования текстовой информации из файла, ее редактирования и сохранения в другой.Когда я пытаюсь выполнить инструкцию

a=fputs( strcat( "\"", strcat(string, "\",\n")), novo_arquivo);

, она выдает ошибку сброса ядра ошибки сброса.Исследуя, я обнаружил, что должен использовать malloc для выделения памяти, но я не знаю, как этот код должен быть написан.

1 Ответ

1 голос
/ 25 сентября 2019

Пример грубого использования strcat() с динамической памятью может выглядеть примерно так:

#include <stdio.h>  // for printf
#include <string.h> // for strcat
#include <stdlib.h> // for calloc

int main()
{
    char* novo_arquivo = "example_string";
    // size + 3 to account for two quotes and a null terminator
    char* concat_string = calloc(strlen(novo_arquivo) + 3, sizeof(*concat_string));
    strcat(concat_string, "\"");
    strcat(concat_string, novo_arquivo);
    strcat(concat_string, "\"");
    // write concat_string to a file...
    printf("%s", concat_string);
    free(concat_string);
}

Вы объявляете concat_string в куче, а не в стеке, поэтому вам нужноосвободите его, когда закончите его использовать, иначе вы создадите утечку памяти.

...