Question

Lorsque vous utilisez ce code, il lance une exception d'écriture non perdue, ce que je suis presque certain que c'est à voir avec la fonction 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;
                    }
}
Était-ce utile?

La solution

Utilisation:

char item[20];

char * item = "" fait que l'élément pointe vers la mémoire en lecture seule - vous essayez de le modifier. Les pointeurs vers les littéraux de cordes sont mieux écrits comme const char * item = "" - Ensuite, le compilateur s'assurera de ne pas le modifier. La raison char * item = "" est légal est la compatibilité en arrière avec C.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top