在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所示:
如下所示,是一个简单的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所示:
相关文章推荐
- VS2008 Debug模式下编译完程序运行时提示"没有找到MSVCR90D.dll..."的解决办法
- 这句话对于理解可执行程序的运行有什么帮助???
- 解决win7系统不支持16位实模式汇编程序DOS运行的问题
- 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集
- ARM裸机程序开发——ARM运行模式及寄存器
- C#中使用DOS命令关闭当前正在运行的程序并重新启动
- 在Windows XP中运行DOS程序
- gem5下用se模式运行自己的测试程序
- vs2005 转到 vs2008 运行:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
- 运行VS2008编译出来的exe程序,提示“ 由于应用程序配置不正确,未能启动此应用程序”
- 一个关于VS2008在其他未安装VS2008的电脑上无法运行编译的程序的问题 收藏
- 【深入理解计算机系统】程序是如何运行的
- 让控制台程序在运行时不显示dos界面
- 对于工厂模式的理解
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- Spark2.x学习笔记:4、Spark程序架构与运行模式
- CLion,debug模式程序正常运行,run模式下出现停止运行
- 第九周实践-阅读程序写出程序运行结果并理解(2)
- 第九周项目一 阅读程序,写出程序运行结果并理解(1)
- java使用ms-dos编译,运行程序