stdlib.h中system函数一定需要注意的地方

OS:Windows

IDE:VC++6.0

 

 

 

System函数大多情况下都是如下的应用的

int main(void)
{
printf("About to spawn command.com and run a DOS command/n");
system("dir");   //这里就是DOS下的dir命令
return 0;
} 
这样写都没有问题。
我在用system函数调用带参数的批处理的时候
当参数是字符串并且该字符串含有空格的时候
例如 在cmd命令行下:运行run.bat "C:/Program Files/1.txt" "D:/Test"
的时候可以正常运行,但是如果用程序写如下的代码时就会出错:
int main(void)
{
char* command =
"run.bat /"C:/Program Files/1.txt/" /"D:/Test/"";

} 
如果是这样,调用cmd命令就会出错,具体出什么错误根据run.bat的内容
 
 
在cmd当中是把C:/Program Files/1.txt拆看成2个参数了
显然这个不是我们想要的
 
 
如果让能正确的调用了?
是在command这个命令再加一对引号就可以了
所以上述两个例子可以改成:
  
 
 
char* command =
"/"run.bat /"C:/Program Files/1.txt/" /"D:/Test/"/"";
system(command);
 
 
虽然这样写麻烦了些,但是这可以很好的处理cmd命令中那些需要参数  有关的引号的乱七八糟的问题

你可能感兴趣的:(c,command,cmd,dos,OS,System)