c++ - 为 fopen 格式化文件名

标签 c++ file

我有一个函数,它从命令行读取文件名,然后尝试打开文件并解析它。但是,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++ - 为 fopen 格式化文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8430442/

相关文章:

java - 如何通过文件处理更改Java中文本文件中的名字?

c++ - 引用绑定(bind)和复制构造函数/移动构造函数

c++ - OpenCL 速度和浮点精度

c++ - 在 C++ 中设计一个不确定的有限自动机(不正确的输出)

java - 在 Java 中打开、修改和读取 .txt 文件的更改的最简单方法是什么?

node.js - 从 Golang 后端流式传输文件到 Node 前端

java - 从数据库获取 Unicode 文本后,如何将其存储在文件中?

c++ - C++中 "Class<>"是什么意思?

c++ - 在不排序的情况下搜索数组中的重复项的最快方法是什么?

php -\n 在我的 fwrite() 中不起作用