Форматирование имени файла для fopen - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть функция, которая читает имя файла из командной строки, а затем пытается открыть файл и проанализировать его. Однако 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 ++.


решаемые

У меня был пропущен начальный пробел в строке, разрешение на экране при включенном отладчике было слишком низким, и поэтому я не заметил пробел, пока я не попытался распечатать строку в файл в виде двоичного файла. Спасибо всем за помощь

1 Ответ

2 голосов
/ 08 декабря 2011

Вы также можете использовать / в именах файлов Windows - это проще, так как вы можете заменить отдельные символы без изменения длины строки.

например."c:/temp/file.txt" вместо "c:\\temp\\file.txt"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...