C ++ - Excepción no controlada al usar Atoi ()
Pregunta
Cuando utilice este código, lanza una excepción de escritura sin control, que casi estoy seguro es hacer con la función 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;
}
}
Solución
Uso:
char item[20];
char * item = ""
hace que el punto del artículo sea la memoria de solo lectura, está tratando de modificarlo.Los punteros para literales de cuerdas están mejor escritos como const char * item = ""
, entonces el compilador se asegurará de que no lo modifique.La razón por la que GeneracDicetAnDode es legal es la compatibilidad atrasada con c.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow