в этом коде я хочу, чтобы получить количество друзей, а затем получить имена я хочу строки будут выделяться динамически с Lengh пользовательского ввода я использовал с 2-мя функциями:динамический символьные указатели массива в строки
void getNum(char** names, int* num)
{
//somecode
names = (char*)malloc(*num * sizeof(char));
//check
}
void getNames(char** names, int* num)
{
int i = 0;
int len = 0;
char name[LEN] = { 0 };
getchar(); //buffer cleaning
for (i = 0; i < *num; i++)
{
printf("enter #%d friend name: ", i+1);
myFgets(name, LEN); //getting name and cleaning "\n" at end
len = strlen(name)+1; // getting the size of string include "/0"
*(names + i) = (char*)malloc(len * sizeof(char));
if (*(names[i]) == NULL)
{
printf("Error allocating memory!\n"); //print an error message
return 1; //return with failure
}
strncpy(*names, name, len);
}
}
Второе динамическое распределение doens't для меня работает, переполнение: «Доступ к месту записи нарушения прав доступа». Если первое распределение будет во второй функции, оно будет работать нормально. Можете ли вы объяснить это? и что мне нужно сделать для этого, будет работать таким образом? спасибо заранее ...
Compile с все предупреждения включены. И, пожалуйста, покажите, как вы называете 'getnames' и' getNum'. –
Я предполагаю: 'names = (char *) malloc (* num * sizeof (char));' должно быть 'names = (char *) malloc (* num * sizeof (char *));' – LPs
Наверху неверно, 'getNum' кажется довольно бессмысленным, поскольку он вызывается * nothing * в опубликованном коде. – WhozCraig