格式化fopen的文件名
Formatting a filename for fopen
我有一个函数,从命令行读取文件名,然后尝试打开文件并解析它。但是,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"
相关文章:
- 从命令行c++发送文本文件名
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 试图创建流或fopen时程序崩溃
- 当Microsoft文档仅包含 C# 示例时,如何查找 C++ 包含文件名
- 如何在CPP的给定目录中列出UTF编码的文件名?
- 使用 fopen 打开 .pak 文件并使该文件应用于 const 无符号字符* (C++)
- 在Visual Studio 2019中保存时ReadDirectoryChangesW文件名的问题
- C++:在Windows中浏览名称中带有点的文件名
- 我在 ifstream input_file(文件名)行中收到错误"no matching function to call";
- fopen 在 gdb 中返回 NULL
- 不带预处理器的调用方法/文件的文件名/行号
- 在 C++ 中为文件名添加时间戳
- 为什么当我在 std::string 中打开文件名的 fstream 时出现"no matching function"错误?
- 如何将文件名作为参数传入并正确打开?
- 如何在目录及其子文件夹中构建文件名字符串向量?
- 要求用户输入C++输出文件名
- 检查 fopen 不支持的文件名
- 为什么当我在 Android 中使用带冒号的文件名时,fopen 会打出 errno:22
- 格式化fopen的文件名