C ++ - необработанное исключение при использовании atoi () - PullRequest
0 голосов
/ 26 марта 2011

При использовании этого кода он генерирует необработанное исключение при записи, что, я почти уверен, связано с функцией 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;
                    }
}

1 Ответ

6 голосов
/ 26 марта 2011

Использование:

char item[20];

char * item = "" указывает элемент на доступную только для чтения память - вы пытаетесь ее изменить.Указатели на строковые литералы лучше записывать как const char * item = "" - тогда компилятор позаботится о том, чтобы вы не модифицировали его.Причина, по которой char * item = "" является законной, заключается в обратной совместимости с C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...