2014-10-01 48 views
0

,當我使用此代碼讀取文件並打印出來安慰:未處理的異常讀取較大的文件

//includes 

int main(){ 
    std::ifstream myReadFile; 
    myReadFile.open("C:\\Users\\Me\\Desktop\\Win32w\\gdip.ahk"); 
    char output[100]; 
    if (myReadFile.is_open()) { 
     while (!myReadFile.eof()) { 


      myReadFile >> output; 
      std::cout << output; 


     } 
    } 
    myReadFile.close(); 
} 

,但打印出來的文件,我得到以下錯誤的所有內容後:

Unhandled exception at 0x51F0742A (msvcp120d.dll) in fourteen.exe: 0xC0000005: Access violation reading location 0x002C10AB. 

當我用5行運行一個較小的文件(script.ahk)時,它運行OK。文件gdip.ahk有大約3300行。

+2

你相信'''能夠看看它接收到的char *,並且知道它指向一個長度爲100個字符的內存塊,以免超過它?如果一條線超過它,你認爲它會做什麼?什麼啓發你使用char數組而不是'std :: string'? – HostileFork 2014-10-01 13:39:57

+2

誰讓你使用'eof'?你不應該使用'eof'。如果有人告訴你使用'eof',不要聽。你應該使用'while(myReadFile >>輸出)'。 – molbdnilo 2014-10-01 14:04:52

+0

我對C++相當陌生,我只是從頁面獲得這段代碼。感謝您的提示。 – alvitawa 2014-10-02 09:30:33

回答