C++ - excepção não Processada quando usando atoi()
Pergunta
Quando utilizar este código, ele lança um não processada escrita de exceção, que eu estou quase certo que é para fazer com o atoi() função.
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;
}
}
Solução
Utilização:
char item[20];
char * item = ""
torna item aponte para memória somente de leitura - você está tentando modificá-lo.Ponteiros para literais de seqüência de caracteres são melhores escrito como const char * item = ""
- em seguida, o compilador irá certificar-se de que você não modificá-lo.A razão char * item = ""
é legal, é a compatibilidade com o C.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow