У меня есть функция, которая читает имя файла из командной строки, а затем пытается открыть файл и проанализировать его. Однако fopen
всегда возвращает ноль с кодами ошибок 2, 3 или 123 в зависимости от заданного имени файла.
Оригинальный нерабочий код:
void CProfiler::ExecuteIrFile( LPCTSTR pszFile)
{
FILE *fp = fopen( pszFile, "r");
if ( !fp) return;
}
Изменение на fopen( "c:\\temp\\file.txt", "r")
, однако, работает.
Так что меня убеждают, что проблема в том, что я могу передать строку, которую я передаю fopen
Замена \
на \\
в строке тоже не работает. Для правильной оценки код, который я использовал для этого:
CString tempStr(pszFile);
tempStr.Replace("\\", "\\\\");
FILE *fp = fopen( tempStr, "r");
Это метод правильного экранирования строки для fopen или чего-то еще, что я пропускаю?
Несложные ответы будут приветствоваться с радостью, так как в прошлом я вообще почти не использовал C ++.
решаемые
У меня был пропущен начальный пробел в строке, разрешение на экране при включенном отладчике было слишком низким, и поэтому я не заметил пробел, пока я не попытался распечатать строку в файл в виде двоичного файла.
Спасибо всем за помощь