2014-10-01 4 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. 

Когда я запускаю меньший файл (script.ahk) с 5 строками, он работает нормально. Файл gdip.ahk имеет бой 3300 строк.

+2

Является ли это вашей убежденностью в том, что '>>' способен смотреть на полученный символ char * и знать, что он указывает на блок памяти длиной 100 символов, чтобы не превышать его? Как вы думаете, что было бы, если бы линия превысила его? И что вдохновило вас на использование массива char вместо 'std :: string'? – HostileFork

+2

И кто сказал вам использовать 'eof'? Вы не должны использовать 'eof'. Если кто-то говорит вам использовать 'eof', не слушайте. Вы должны использовать 'while (myReadFile >> output)'. – molbdnilo

+0

Я довольно новичок в C++, я просто получил этот код со страницы. Спасибо за советы. – alvitawa

ответ

Смежные вопросы