C++中如何读取工程文件夹外的文件

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:26:17
我用C++(MFC)做一个加密软件,这个软件需要用户提供需加密的文件的地址,程序获取后读取那个文件进行操作。文件的地址我用一个字符串保存,然后将指向这个字符串的指针传给操作函数:
LPTSTR lpCmdLine;
FILE *fp1;
fp1=fopen(lpCmdLine,"rb");
在执行函数的功能前,进行验证(加密函数内开头):
if(fp1==NULL){
MessageBox("文件无法打开","错误",MB_ICONERROR);
}
结果发现,我每次将工程文件外的文件地址如"F:\note.txt"给lpCmdLine时,程序就会说“文件无法打开”,而在工程文件内建一个note.txt,将"note.txt"赋给lpCmdLine,程序就运行正常,可以继续执行函数体了。
请问这怎么解决呢,怎样做到将放在我的电脑其他地方的文件传给这个程序进行操作呢?
急,回答得越详细越好(原理),谢谢!
感谢521linux,真的很惭愧……居然没查出是这个问题,再请问一下那为什么我让lpCmdLine="F:\\note.txt",再调用MessageBox(lpCmdLine);
显示的却是F:\note.txt呢?我也曾怀疑是路径格式有问题,特意用LPTSTR GetCommandLine();函数看过源程序的位置,也只显示单个反斜杠呢?

应该是字符串的问题,你给的F:\note.txt程序不认的,你要给F:\\note.txt才行

传递"F:\\note.txt" ,在C++中没有'\'这个字符,如果要表示‘\’这个字符就

只能是'\\'。

在来回答你第二个问题:

‘\n’知道吧,字符串+上它只起换行的作用,也什么都不显示

如果要显示"F:\\note.txt" 这个字符,那你就要输入“F:\\\\note.tx”

贴上完整点的代码啊,从你写的那部分代码看不出什么问题

例如你的程序是怎么给 lpCmdLine 赋值的