格式化fopen的文件名

Formatting a filename for fopen

本文关键字:文件名 fopen 格式化      更新时间:2023-10-16

我有一个函数,从命令行读取文件名,然后尝试打开文件并解析它。但是,fopen总是返回null,错误码为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++。


解决

我在字符串中传递了一个前导空间,调试器打开的屏幕上的分辨率太低,因此没有注意到这个空间,直到我尝试将字符串打印为二进制文件。谢谢大家的帮助

您也可以在windows文件名中使用/ -这更容易,因为您可以替换单个字符而无需更改字符串长度。

"c:/temp/file.txt"代替"c:\temp\file.txt"