vs2010下如何调试带输入参数的程序
当main函数的输入参数为空时,我们可以很方便的通过设置断点,单步运行的方法调试,可是如果需要调试的是有输入参数的程序该怎么办呢?最终还是让我找到了:
英文版:Project -> Properties -> Configuration Properties -> Debugging
在Command Arguments里填上即可。
中文版:菜单[项目] -> 属性页 -> 配置属性 -> 调试
在[命令行参数]里填上即可。
记得不同参数之前用空格隔开。
int argc,char*
argv
agrc表示参数的个数
argv储存参数
这个函数的意思是逐一输出参数
实际上,main函数也可以带参数。带参数main函数的定义格式如下:
void
main(int argc, char* argv[])
{
...
...
}
argc和argv是main函数的形式参数。这两个形式参数的类型是系统规定的。如果main函数要带参数,就是这两个类型的参数;否则main函数就没有参数。变量名称argc和argv是常规的名称,当然也可以换成其他名称。
那么,实际参数是如何传递给main函数的argc和argv的呢?我们知道,C程序在编译和链接后,都生成一个exe文件,执行该exe文件时,可以直接执行;也可以在命令行下带参数执行,命令行执行的形式为:
可执行文件名称
参数1 参数2 ... ... 参数n
可执行文件名称和参数、参数之间均使用空格隔开。例如,我们在DOS下运行copy c:\test.txt
d:\test.txt,可执行文件名称为copy,参数1为字符串“c:\test.txt”,参数2为“d:\test.txt”。结果copy命令将c:\test.txt拷贝到d盘,目标文件取为test.txt。
如果按照这种方法执行,命令行字符串将作为实际参数传递给main函数。具体为:
(1)
可执行文件名称和所有参数的个数之和传递给argc;
(2)
可执行文件名称(包括路径名称)作为一个字符串,首地址被赋给argv[0],参数1也作为一个字符串,首地址被赋给argv[1],...
...依次类推。
例如,现在运行命令行(test是编译后的exe文件名称):
C:\TC\test how are
you
那么test工程的main函数参数argc=4;
argv[0]将保存字符串"C:\TC\test"的首地址;
argv[1]将保存字符串"how"的首地址;
argv[2]将保存字符串"are"的首地址;
argv[3]将保存字符串"you"的首地址;
下面的例子打印所有的argv参数:
main(int
argc, char *argv[])
{
int i;
printf("\nTotal %d
arguments",argc);
for(i=0;i<argc;i++)
{
printf("\nArgument %d = %s
",i+1, argv[i]);
}
}
如果编译后的exe文件名称为test,在DOS下运行C:\TC\test how are
you,结果输出:
Total 4 arguments
Argument 1 = C:\TC\test.exe
Argument 2 =
how
Argument 3 = are
Argument 4 =
you
我们也可以在调试状态下输入命令行参数,方法是:
在TurboC的Options菜单下有一个子菜单Arguments,选择该项并确定,弹出输入窗口;在输入窗口键入命令行参数即可。比如要调试上述的test,可以在输入窗口键入how
are
you。在调试过程中,可执行文件名称和参数字符串将被传递给main函数的形式参数。
在DOS系统下,人们常常希望在运行exe的同时,传递一些有用的信息。例如copy.exe,运行时将源文件名称和目的文件名称作为参数传入。利用指针数组argv作为main函数的形式参数,可以满足这种需要。

浙公网安备 33010602011771号