Преобразование строки в 2D-строку в C: изучение нескольких методов

В этой статье блога мы рассмотрим различные методы преобразования строки в двумерную строку на языке программирования C. Мы предоставим примеры кода для каждого метода, что позволит вам понять реализации и выбрать тот, который лучше всего соответствует вашим потребностям. Давайте погрузимся!

Метод 1: использование динамического распределения памяти
Пример кода:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void convertTo2D(char* str, int rows, int columns) {
    char twoDString = (char)malloc(rows * sizeof(char*));

    for (int i = 0; i < rows; i++) {
        twoDString[i] = (char*)malloc(columns * sizeof(char));
        strncpy(twoDString[i], str + (i * columns), columns);
    }

    for (int i = 0; i < rows; i++) {
        printf("%s\n", twoDString[i]);
    }
// Free memory
    for (int i = 0; i < rows; i++) {
        free(twoDString[i]);
    }
    free(twoDString);
}
int main() {
    char str[] = "HelloWorld";
    int rows = 2;
    int columns = 5;

    convertTo2D(str, rows, columns);

    return 0;
}

Метод 2: использование статического двумерного массива
Пример кода:

#include <stdio.h>
#include <string.h>
void convertTo2D(char* str, int rows, int columns) {
    char twoDString[rows][columns];

    for (int i = 0; i < rows; i++) {
        strncpy(twoDString[i], str + (i * columns), columns);
    }

    for (int i = 0; i < rows; i++) {
        printf("%s\n", twoDString[i]);
    }
}
int main() {
    char str[] = "HelloWorld";
    int rows = 2;
    int columns = 5;

    convertTo2D(str, rows, columns);

    return 0;
}

Метод 3: использование одномерного массива указателей
Пример кода:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void convertTo2D(char* str, int rows, int columns) {
    char* twoDString[rows];

    for (int i = 0; i < rows; i++) {
        twoDString[i] = (char*)malloc(columns * sizeof(char));
        strncpy(twoDString[i], str + (i * columns), columns);
    }

    for (int i = 0; i < rows; i++) {
        printf("%s\n", twoDString[i]);
        free(twoDString[i]);
    }
}
int main() {
    char str[] = "HelloWorld";
    int rows = 2;
    int columns = 5;

    convertTo2D(str, rows, columns);

    return 0;
}

В этой статье мы рассмотрели три различных метода преобразования строки в двумерную строку на языке программирования C. В первом методе использовалось динамическое распределение памяти, во втором — статический двумерный массив, а в третьем — одномерный массив указателей. Каждый метод имеет свои преимущества и может быть выбран исходя из ваших конкретных требований. Поняв и реализовав эти методы, вы сможете эффективно преобразовывать строки в 2D-строки в своих программах на языке C.