Как добавить в массив строк новую строку в си?

В C для добавления новой строки в массив строк необходимо выполнить следующие шаги:

1. Определить массив указателей на строки. Для примера, создадим массив char *strings[N], где N — это максимальное количество строк, которые мы хотим хранить.
2. Выделить память под новую строку при помощи функции malloc(). Например, чтобы добавить строку newString, выполним char *newString = malloc(strlen(string) + 1), где string — это сама новая строка.
3. Скопировать содержимое новой строки в выделенную память при помощи функции strcpy(). Например, strcpy(newString, string).
4. Добавить указатель на новую строку в массив строк. Найдите пустой элемент в массиве и присвойте ему значение нового указателя. Например, strings[i] = newString, где i — это индекс пустого элемента.
5. Увеличить значение переменной, отслеживающей количество строк в массиве. Например, numStrings++.

Вот полный пример кода, демонстрирующий добавление новой строки в массив:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STRINGS 10

int main() {
    char *strings[MAX_STRINGS];  // Массив указателей на строки
    int numStrings = 0;  // Количество строк в массиве

    // Добавляем новую строку "Hello, World!"
    char *newString = malloc(strlen("Hello, World!") + 1);
    strcpy(newString, "Hello, World!");
    strings[numStrings] = newString;
    numStrings++;

    // Добавляем новую строку "Привет, Мир!"
    newString = malloc(strlen("Привет, Мир!") + 1);
    strcpy(newString, "Привет, Мир!");
    strings[numStrings] = newString;
    numStrings++;

    // Выводим все строки
    for (int i = 0; i < numStrings; i++) {
        printf("%sn", strings[i]);
    }

    // Освобождаем память для каждой строки
    for (int i = 0; i < numStrings; i++) {
        free(strings[i]);
    }

    return 0;
}

Обратите внимание, что в конце программы мы освобождаем память, выделенную под каждую строку, используя функцию free(). Это необходимо для предотвращения утечки памяти.