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;
                    }
}
War es hilfreich?

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
scroll top