C++ - Необработанное исключение при использовании atoi()
Вопрос
При использовании этого кода он выдает необработанное исключение записи, которое, я почти уверен, связано с функцией atoi().
while(true){
char* item = "";
cin >> item;
int numItem = atoi(item);
if(numItem){
if(numItem<=backpackSpaces){
equipItem(backpack[numItem]);
break;
}else{
cout << "No such item." << endl;
}
}else if(item == "back"){
cout << "Choose an option from the original choices. If you can't remember what they were, scroll up." << endl;
break;
}else{
cout << "Command not recognised." << endl;
}
}
Решение
Воспользуйся:
char item[20];
char * item = ""
указывает элемент на память, доступную только для чтения - вы пытаетесь его изменить.Указатели на строковые литералы лучше записывать в виде const char * item = ""
- тогда компилятор позаботится о том, чтобы вы его не изменяли.Причина char * item = ""
законна ли обратная совместимость с C.
Не связан с StackOverflow