Я новичок здесь, и мой английский не очень хорош. Приносим извинения за доставленные неудобства!
Я программирую приложение для Windows Mobile с собственным кодом (MFC). Я пытаюсь открыть файл, и это сводит меня с ума. Я пытался открыть его тысячами разных способов ... И я действительно достигаю этого, но когда я пытаюсь прочитать (fread
или getline
), программа вылетает без объяснения причин:
The program 'x' finalize with code 0 (0x0)
Метод GetLastError()
в некоторых случаях возвращает 183.
Затем я поместил код, который использовал для открытия файла:
std::wifstream file(L"\\Archivos de programa\\Prog\\properties.ini");
wchar_t lol[100];
if (file) {
if(!file.eof()) {
file.getline(lol,99);
}
}
Он входит во все if, но getline падает.
FILE * lol = NULL;
lol = _wfope n(ruta, L"rb");
DWORD a = GetLastError();
if ( lol != NULL )
return 1;
else
return -1;
Возвращает 1 (правильно), а после, в более поздней getline, хранит мусор в строке. Однако, это не терпит крах !!
fp.open (ruta, ifstream::in);
if ( fp.is_open() ) {
return 1;
}else{
return -1;
}
Он входит в return 1, но при выполнении более позднего getline () вылетает.
Я отладил метод getline()
, и он зависает в библиотеке fstream
, прямо здесь:
if ((_Meta = fget c (_File)) == EOF)
return (false);
В случае если. fgetc()
, я полагаю.
Я схожу с ума !! Мне нужна подсказка, пожалуйста !!
Путь к файлу правильный. Во-первых, потому что, теоретически, методы открывают файл, а во-вторых, я получаю путь динамически, и он совпадает.
Подчеркните, что метод fread
также дает сбой.
Заранее спасибо!
P.S:.
Скажем, что когда я делаю fopen, метод fp.good () возвращает мне FALSE, а GetLastError возвращает мне 183. С другой стороны, если я использую fp.fopen(path, ifstream::in);
или std::wifstream fp(path);
, fp.good();
возвращает мне TRUE
и GetLastError()
не выдает никакой ошибки (0).