У меня есть следующая программа, в которой две переменные должны быть переданы по ссылке на функцию, где их значения будут определены на основе внешних факторов, прежде чем они будут возвращены в main()
, чтобы они могли использоваться другими функциями. Первая переменная, которую я пытаюсь передать, это int
, и это нормально, но другая - это массив строк, что вызывает у меня некоторые проблемы.
Я провел достаточно исследований по этому вопросу, чтобы понять, что у вас не может быть массива или ссылок (хотя мне еще предстоит выяснить, почему), и мне было интересно, сможет ли кто-нибудь помочь мне выяснить, как это сделать? Различные методы, которые я попробовал, привели к segmentation faults
.
NB : В приведенном ниже коде массив передается по значению, поскольку я просто не знаю, что для него написать.
Обновление : мне нужно использовать массив для моей курсовой работы. Некоторые другие структуры данных, такие как vector
, которые были предложены, были бы хороши, но я должен использовать определенные структуры.
void initialise_existing_devices(int& no_of_existing_devices, string existing_devices[100]);
int main()
{
int no_of_existing_devices = 0;
string existing_devices[100];
initialise_existing_devices(no_of_existing_devices, existing_devices[100]);
}
void initialise_existing_devices(int& no_of_existing_devices, string existing_devices[100])
{
string line;
ifstream DeviceList;
DeviceList.open("devices/device_list");
while (true)
{
getline(DeviceList, line, '\n');
if (DeviceList.eof())
{
break;
}
++ no_of_existing_devices;
}
DeviceList.close();
DeviceList.open("devices/device_list");
for (int i = 0; i < no_of_existing_devices; i ++)
{
getline(DeviceList, line, '\n');
existing_devices[i] = line;
}
}