C ++ - Unbehandelte Ausnahme bei Verwendung von atoi ()
Frage
Bei Verwendung dieses Codes wird eine unbehandelte Schreibausnahme ausgelöst, von der ich fast sicher bin, dass sie mit der Funktion atoi () zu tun hat.
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;
}
}
Lösung
Verwenden:
char item[20];
char * item = ""
lässt das Element auf den Nur-Lese-Speicher verweisen - Sie versuchen, es zu ändern.Zeiger auf Zeichenfolgenliterale werden besser geschrieben als const char * item = ""
- dann wird der Compiler sicherstellen, dass Sie es nicht ändern.Grund char * item = ""
ist legal ist Abwärtskompatibilität mit C.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow