Я дал размер массива вручную, как показано ниже:Динамическое распределение памяти массив символов
int main(int argc, char *argv[])
{
char buffer[1024];
strcpy(buffer,argv[1]);
...
}
Но если данные, передаваемые в аргументе превышает этот размер, он может создаст проблемы.
Это правильный способ выделения памяти динамически?
int main(int argc, char *argv[])
{
int length;
char *buffer;
length = sizeof(argv[1]); //or strlen(argv[1])?
buffer = (char*)malloc(length*sizeof(char *));
...
}
Вы работаете в C или C++? Если вы работаете на C++, использование 'malloc()', как правило, ошибочно (и raw 'char *' тоже не очень хорошая идея). Если вы работаете на C, вам не нужен тег C++. На самом деле, не дублируйте вопрос - это два разных языка. –
Что касается вашего вопроса "use' sizeof() 'или' strlen() '", то использование 'strlen (argv [1]) + 1' будет работать так, как вы этого хотите (и использование' sizeof' будет вообще не выделяться достаточно Память). Большой вопрос: зачем нужна копия данных, на которые указывает 'argv [1]'? –