Intereting Posts

Как инициализировать строки 2D массива строк в C

Я хочу хранить строки в 2D-массиве с помощью указателей, но я смущен тем, как это сделать. В примерах, которые я видел, используются только массивы int или используйте скобки [] для выделения фиксированного размера памяти. Поэтому я пытаюсь инициализировать свой 2D-массив строк, и это то, что у меня есть:

char ** stringArr = (char**)malloc(/*I don't know what goes here*/); for(i = 0; i < rows; i++) stringArr[i] = (char*)malloc(cols *sizeof(char)); 

Поскольку вы можете увидеть параметр для моего первого вызова malloc, я застрял в том, что туда положить, если я хочу точное число x строк, где каждая строка хранит строку символов. Любая помощь будет оценена!

Сделайте это, потому что вы выделяете некоторое количество указателей:

 malloc(rows * sizeof(char*)) 

Вы захотите использовать количество строк.

 char ** stringArr = malloc(rows * sizeof(char*)); 

Кроме того, не следует выводить возвращаемое значение вызова malloc ().

Используйте sizeof *ptr * N

Обратите внимание, как этот метод использует правильный тип, даже если stringArr был char ** stringArr или int ** stringArr .

 stringArr = malloc(sizeof *stringArr * rows); for(i = 0; i < rows; i++) stringArr[i] = malloc(sizeof *(stringArr[i]) * cols);