Я пытаюсь создать программу, которая заполняет массив аргументов фиксированного размера, используя аргументы, передаваемые через терминал.Мой первый шаг - попытаться создать и заполнить массив строк аргументов по умолчанию, что мне удалось сделать.Однако сейчас я пытаюсь использовать malloc()
для выделения места для этого массива и не могу заставить его скомпилировать.Я перепробовал все, что мог придумать в отношении правильного синтаксиса.Я пытался провести дополнительные исследования malloc()
и узнать, как использовать его для двумерных массивов, но я не нашел никакой информации, которая бы мне помогала.Я застрял и не уверен, что делать дальше.Вот код:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#define MAX_NUM_OF_ARGS 5
#define MAX_ARG_SIZE 256
int main(int argc, char **argv) {
printf("%s%d\n", "Length: ", argc); //for debug purposes
// Make sure we don't have more than five arguments
if(argc > MAX_NUM_OF_ARGS) {
printf("%s", "Too many arguments. Must enter fewer than 4.");
}
// Populate the array
else{
char defaultArgs[] = "defaultArgs"; //create default argument array
//allocate memory for default array
char argumentArray[MAX_NUM_OF_ARGS][MAX_ARG_SIZE] =
(char *)malloc(MAX_NUM_OF_ARGS * MAX_ARG_SIZE * sizeof(char));
//populate array with default arguments
for (int i = 0; i < MAX_NUM_OF_ARGS; i++) {
strcpy(argumentArray[i], defaultArgs);
printf("%s\n", argumentArray[i]);
}
free(argumentArray);
return 0;
}
}
Когда я пытаюсь скомпилировать, я получаю недопустимую ошибку инициализатора при приведении (char*
) для malloc()
.Я пытался привести его к (char**
) и (char
), а также изменить sizeof(char)
на sizeof(char*)
и sizeof(char**)
.
Я не совсем уверен, что делаю неправильнона данный момент, и я в недоумении, что даже попробовать дальше.