您的位置:首页 > 其它

在VS2008的Debug32模式和Dos下运行程序时对于“./”的理解

2008-08-01 20:54 204 查看
本文要比较的是在VS2008的Debug32模式和Dos下运行程序时对于“./”的理解。
如下所示,是一个简单的C/C++程序:

#include <stdio.h>

#include <tchar.h>

#include <stdlib.h>

#include <string.h>

#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])

{

FILE* fpr;

char msgFile[80];

char dir[80];

char file[80];

char buf[80];

memset(msgFile, '/0', 80);

memset(dir, '/0', 80);

memset(file, '/0', 80);

memset(buf, '/0', 80);

GetPrivateProfileString("TEST", "MSG_DIR", "F://vs2008//Test", (LPTSTR)dir, 80, "F://vs2008//Test//Test.ini");

GetPrivateProfileString("TEST", "MSG_FILE", "message.dat", (LPTSTR)file, 80, "F://vs2008//Test//Test.ini");

strcpy_s(msgFile, 80, dir);

strcat_s(msgFile, 80, "//");

strcat_s(msgFile, 80, file);

if(!fopen_s(&fpr, msgFile, "r")){

fgets(buf, 80, fpr);

printf_s("%s/n", buf);

}

return 0;

}

其中的Test.ini文件如下:
[TEST]
MSG_DIR=F:/vs2008/Test
MSG_FILE=message.dat
message.dat文件如下:
This is a test program!
上面的程序运行的结果如图1所示:



先对程序和Test.ini文件做如下修改:
程序:
GetPrivateProfileString("TEST", "MSG_DIR", ".", (LPTSTR)dir, 80, "F://vs2008//Test//Test.ini");
ini文件:
;MSG_DIR=F:/vs2008/Test
(前面加了一个分号,即注释这一行)
做上述改动后,在程序中msgFile的值就变成了“./message.dat”,此时运行程序得到的结果如图2所示:



也就是说,这时程序已经找不到message.dat文件了,那如何才能让程序找到message.dat文件呢?
你可以将message.dat文件放在F:/vs2008/Test/Test目录下,即将它和Test.cpp放在一起。
此时你如果再运行改过之后的程序运行结果就如图1所示了。

这时,我们不妨再做一个尝试,就是在dos命令行格式中运行Test.exe,如图3所示:



从图中可以看出,没有输出,也就是说,message.dat文件又找不到了。
这时,如果你将message.dat文件放在F:/vs2008/Test/Debug文件夹下,则它又能访问了,如图4所示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐