O имеет назначение, в котором я должен создать функцию, чтобы пригласить пользователя для имени файла и передать вход обратно в main. Я должен передать его в качестве параметра (я предполагаю, что это означает, что это pass-by-reference.) Я просто работаю над первой функцией «getFileName». Я знаю, что в C++ есть более простые способы сделать это, но мне поручено это сделать, я уверен, что здесь есть что-то ценное, но я не понимаю. В любом случае я был в состоянии получить функцию для работы с целыми числами, как, например:Параметр, передаваемый с текстом в C++
#include <iostream>
using namespace std;
void getFileName(int &fileName);
int main()
{
int fileName;
getFileName(fileName);
cout << fileName;
return 0;
}
void getFileName(int &fileName)
{
cout << "Please enter the filename: ";
cin >> fileName;
return;
}
Моя проблема arrises когда я пытаюсь изменить целые числа в текст. Я сказал, чтобы использовать прототип:
void getFileName(char []);
Все Стараюсь дает мне ошибки, в основном делать с установкой указателей на массивы, или установить ссылку на массивы и так далее. Мой текущий код выглядит следующим образом:
#include <iostream>
using namespace std;
void getFileName(char &fileName[]);
int main()
{
char fileName[];
getFileName(fileName);
cout << fileName;
return 0;
}
void getFileName(char &fileName)
{
cout << "Please enter the filename: ";
cin >> fileName;
return;
}
И я получаю ошибки с г ++:
assign26.cpp:19: error: declaration of ‘fileName’ as array of references
assign26.cpp: In function ‘int main()’:
assign26.cpp:23: error: storage size of ‘fileName’ isn't known
Отдавая мне код, чтобы решить эту проблему поможет мне получить мое назначение сделано, я хочу, чтобы понять, что происходит, поэтому, пожалуйста, объясните решения. Я очень ценю всю помощь.
EDIT
Вот код, который работает, спасибо членам этого сайта за помощь!
void getFileName(char fileName[]);
int main()
{
char fileName[256];
getFileName(fileName);
cout << fileName;
return 0;
}
void getFileName(char fileName[])
{
cout << "Please enter the filename: ";
cin >> fileName;
return;
}
Проблема: я не понял, как работает массив. Я пытался передать текст по ссылке, когда мне это не нужно. Также синтаксические ошибки, которые я должен был увидеть.
'char & fileName []' объявлен как массив ссылок на символ. В стандарте говорится, что не может быть массива ссылок. Но вам это не нужно, чтобы выполнить то, что вы делаете. – 0x499602D2
«Размер хранилища« имя_файла »неизвестен» только потому, что вы не указываете размер здесь 'char fileName [];'. – mwerschy
Подписи прототипа и реализации не совпадают. Это еще одна проблема. – 0x499602D2