2011-03-26 192 views
0

使用此代碼時,它會拋出一個未處理的寫入異常,我幾乎可以肯定是使用atoi()函數。C++ - 使用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; 
        } 
} 

回答

6

用途:

char item[20]; 

char * item = "",使項目點只讀存儲器 - 你試圖修改它。指向字符串的指針最好編寫爲const char * item = "" - 然後編譯器將確保您不修改它。 char * item = ""合法的原因是與C向後兼容。

+0

我知道有一個數組在其中。>。謝謝 – pighead10 2011-03-26 15:19:27

+3

更好的是,使用'std :: string'。 – 2011-03-26 15:20:48

+0

現在如果我輸入'back',它會輸出'Command not recognized'命令? – pighead10 2011-03-26 15:24:48

相關問題