Я пытаюсь прочитать файл из 10 строк различной длины (который не должен превышать 349 символов) и хранить их в динамически распределенном массиве, чтобы иметь возможность манипулировать ими позже. У меня есть код ниже, который дает мне «предупреждение: передающий аргумент 1 из âstrcpyâ делает указатель из целого без трансляции».Динамическое выделение строк из stdin?
Что я здесь сделал неправильно? Моя логика заключалась в том, что адреса должны быть указателем на массив указателей, где каждый указатель в массиве указывает на строку в строке, которую я попытаюсь выполнить, используя strcpy этой строки для этой точки.
char buffer[350];
char** addresses;
int i = 0;
*addresses = malloc(sizeof(char*)*10); /* Let's start off with 10 addresses */
while(fgets(buffer, sizeof(buffer), stdin) != NULL)
{
strcpy(*addresses[i],buffer);
i++;
}
Так было использовано «* addresses = malloc (sizeof (char *) * 10);» правильно или должны ли они быть адресами? – Hazim
@ Хэзим в конечном итоге до * одиннадцати * распределений. Один для последовательности из 10 указателей, затем еще 10 для каждого указателя для ссылки на * свой собственный * динамический буфер, который будет заполнен вашими данными линии для этого слота. Вы забыли последние распределения и, таким образом, вызывают * неопределенное поведение *. – WhozCraig