Я пишу следующий C++ код:ошибка шины 10 - символ * массив
int main() {
char *argv[4];
cin >> argv[0] >> argv[1] >> argv[2] >> argv[3];
cout << argv[0] << argv[1] << argv[2] << argv[3] << endl;
return 0;
}
Это дает мне ошибку сегментации 11. Но если я инициализирует массив с 4 string
значений вместо приема пользовательского ввода, а затем распечатать , он отлично работает.
Кроме того, если я попробовать следующее:
int main() {
char *argv[4] = {"bg","demo","running","2"};
cout << argv[0] << argv[1] << argv[2] << argv[3] << endl;
cin >> argv[0] >> argv[1] >> argv[2] >> argv[3];
cout << argv[0] << argv[1] << argv[2] << argv[3] << endl;
return 0;
}
Я получаю автобус ошибка 10. Пожалуйста, скажите мне, что я делаю неправильно. Я не вижу незаконного доступа к памяти.
Литеральные строки не доступны для записи. Вы пытаетесь перезаписать их, когда вы делаете 'cin >> argv [0]' – Barmar
Считаете ли вы использование 'std :: string argv [4]'? Делать жизнь легче. –
И если пользователь вводит слова дольше, чем эти начальные значения, вы выходите из пределов. Почему вы не используете 'std :: string' вместо' char * '? – Barmar