Для разбиения строки на подстроки и определения их в динамический массив строк с использованием языка программирования C можно использовать следующий подход:
1. Включить необходимые библиотеки:
#include <stdio.h> #include <stdlib.h> #include <string.h>
2. Создать функцию, которая будет разбивать строку на подстроки:
char** splitString(const char* input, const char* delimiter, int* count) { char* copy = strdup(input); // Создаем копию входной строки char* token = strtok(copy, delimiter); // Получаем первую подстроку // Считаем количество подстрок int numTokens = 0; while (token) { token = strtok(NULL, delimiter); numTokens++; } // Выделяем память для массива строк (динамического массива) char** substrings = malloc(numTokens * sizeof(char*)); // Разбиваем исходную строку на подстроки int i = 0; token = strtok(input, delimiter); while (token) { substrings[i] = malloc((strlen(token) + 1) * sizeof(char)); strcpy(substrings[i], token); token = strtok(NULL, delimiter); i++; } // Освобождаем копию строки free(copy); *count = numTokens; return substrings; }
3. Пример использования функции:
int main() { const char* input = "раз, два, три, четыре, пять"; const char* delimiter = ", "; int count; // Вызываем функцию splitString для разбиения строки char** substrings = splitString(input, delimiter, &count); // Выводим результаты for (int i = 0; i < count; i++) { printf("%sn", substrings[i]); } // Освобождаем память, занимаемую под подстроки for (int i = 0; i < count; i++) { free(substrings[i]); } free(substrings); return 0; }
В данном примере строка "раз, два, три, четыре, пять" разбивается на подстроки с разделителем ", ". Результат выводится на экран, а затем выделенная под подстроки динамическая память освобождается.