0

使用此代码时,它会引发未处理的写入异常,我几乎可以肯定这与 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;
                    }
}
4

1 回答 1

6

采用:

char item[20];

char * item = ""使 item 指向只读内存 - 您正在尝试修改它。指向字符串文字的指针最好写成const char * item = ""- 然后编译器将确保您不修改它。合法的原因char * item = ""是与 C 的向后兼容性。

于 2011-03-26T15:18:15.987 回答