Я пытаюсь создать таблицу строк с 20 строками и 20 столбцами. Он имеет следующие функции.Передача 2D-массива указателей строкового массива для работы в C
значения Вставить в клетки в таблице
Объединить 2 строки и заменить на другую строку
значения Modify в таблице
и еще несколько операций
Для этого я пытаюсь объявить, передать и изменить y 2d строки, т.е. 2D-массив из char
указателей. Это то, что я сделал. Ниже код содержит только небольшую часть моего кода.
char *first_array[20][20]; //declared 2d array of pointers for storing a table of strings
int modify(char *array1[], char *array2[]) //here i want to pass 2 rows row 1 and row 2
{
int result1 = strcmp(array1[1], "~"); // here i want to access row 1 1st column for string operation
int result2 = strcmp(array2[1], "$");
return result1+result2;
}
int main() {
char *string = "hello";
strcpy(first_array[1][0], string); // insert values into table
strcpy(first_array[1][1], "~");
strcpy(first_array[2][0], string);
strcpy(first_array[2][1], "~");
printf("the result is %d\n", modify(first_array[1], first_array[2]); // pass row1 and row2
return 0;
}
Правильный ли этот код? Поскольку Первоначально я получаю ошибку
expected ‘char **’ but argument is of type ‘const char **’
Но я как-то исправил и теперь я получаю ошибку сегментации. Я не могу получить ожидаемый результат.
Просьба предоставить мне правильный код для объявления, доступа, изменения и передачи функций 2d массива указателей/строк символов в C для вышеуказанных сценариев.
Вы должны либо выделить память для 'first_array' перед использованием' strcpy', используя 'malloc', либо просто назначить вместо' strcpy'. Обратите внимание, что вы не должны изменять строку, если вы назначаете. И не забудьте включить 'stdlib.h' и' free' выделенную память, если вы собираетесь на 'malloc'. –
@CoolGuy .... Благодарим вас за помощь. Я отредактировал мой вопрос. Ищем ваши ответы. – nithesh1990
Я отбросил ваше редактирование, так как это сделало ответы бессмысленными. Если у вас есть другой вопрос, задайте другой вопрос. –