Программа должна запрашивать у пользователя свое имя пользователя. Получив имя пользователя, он объединяет его с '.history' для создания username.history. Затем он открывает этот файл (имя_пользователя.история) и читает ввод от него. Хотя я нахожусь в segfault. Всякий раз, когда он открывает файл, который пуст, потому что файл не существует, он считывает несколько строк и затем выдает segfault. Я думаю, проблема может быть связана с тем, как я пытаюсь открыть файл, но я не уверен. Вот та часть, которая вызывает проблемы:Segfault во время чтения файла
// File input and output
ifstream f_in;
ofstream f_out;
// Prompt user for their username.
char username[80];
cout << "Please input your username: " << endl;
cin >> username;
cout << endl;
cout << "Loading history file if it exists." << endl;
// Create file naem and initialize the file line counter to 0.
strcat(username, ".history");
int fcount = 0;
// Open file and read in lines if there are any.
// Place read lines into the command string for use later.
char tmp[50];
f_in.open(username);
while(!f_in.eof()){
f_in >> tmp;
cmd[fcount] = tmp;
fcount++;
}
f_in.close();
Другое уместна информация: CMD объявлена как глобальная переменная (символьные CMD [200] [50])
Любая помощь будет значительно appreaciated.
Есть ли каждая строка из "username.history" менее 50 символов? – Falmarri
Это должно быть, но это не имеет значения, поскольку файл не существует в первом прогоне. – Bigby
Почему вы используете 'strcat' (считающийся небезопасным программистами C) в программе на C++? Использовать 'std :: string' и жизнь вдруг станет намного проще. –