VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 500|回复: 5

[讨论] 求助,C++中SYSTEM的用法

[复制链接]
38_avatar_middle
最佳答案
0 
在线会员 发表于 2022-4-18 03:55:16 | 显示全部楼层 |阅读模式
C和C++中system(); 可以执行cmd命令,可以执行.bat批处理,可以执行VB编写的VBS脚本,还可以运行.exe。
我一直有个问题,没找到答案。。。
当使用system()函数,执行一个A.exe程序时。
比如:这个A.exe程序是用C语言编写的。
C程序,都是从main(int argc, char **argv)开始执行的。。。
system(); 运行A.exe时,如何对A.exe中的main(int argc, char **argv)
传递参数呀???




上一篇:"今天" 看 "昨天" 写的程序代码,就像在看笑话。。。
下一篇:c数组,指针应用
17_avatar_middle
最佳答案
35 
在线会员 发表于 2022-4-18 07:53:09 | 显示全部楼层
  1. system("copy /y t:\\bb.txt t:\\cc.txt");
复制代码


copy 空格隔开的就是参数了啊
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-4-18 23:13:59 | 显示全部楼层
yoobaby 发表于 2022-4-18 07:53
copy 空格隔开的就是参数了啊

main(int argc, char **argv)

一个,int变量。
一个,char二级指针。
我只对,一级指针,了解。
就是一块内存空间的首地址。。。
system();如何 传这俩个参数???
17_avatar_middle
最佳答案
35 
在线会员 发表于 2022-4-19 13:29:42 | 显示全部楼层
本帖最后由 yoobaby 于 2022-4-19 13:37 编辑

  1. //int main(int argc, char** argv) 等效,你用下面的 argv[] 可能更便于你理解
  2. int main(int argc, char* argv[])
  3. {
  4.         for (int i = 0; i < argc; i++)
  5.         {
  6.                 printf("%s ", argv[i]);
  7.         }
  8.         printf("\n");
  9.         return 0;
  10. }


  11. int main(int argc, char** argv) {
  12.         for (int i = 0; i < argc; i++)
  13.         {
  14.                 printf("%s ", *argv++);
  15.         }
  16.         printf("\n");
  17.         return 0;
  18. }
复制代码


编译完这个程序,cmd中运行:test.ext 11 22
你应该就能理解怎么用了!
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-4-20 00:12:08 | 显示全部楼层
yoobaby 发表于 2022-4-19 13:29
编译完这个程序,cmd中运行:test.ext 11 22
你应该就能理解怎么用了!

char ** argv;
char * argv[]
char  argv[][]
这个,是可以理解的。。。
我不明白, system(); 运行外部程序时,如何对argc和argv传递参数。。。。
17_avatar_middle
最佳答案
35 
在线会员 发表于 2022-4-20 12:16:59 | 显示全部楼层
本帖最后由 yoobaby 于 2022-4-20 12:20 编辑
zmrghy 发表于 2022-4-20 00:12
char ** argv;
char * argv[]
char  argv[][]


argc 就是你传的参数的个数,你不需要传值的 ,他自己会给出的
比如,你system("1.exe 11 22");
argc自动就是2的。
你一直问要怎么给给argv传参,最上面不是回答了吗,就是用空格分隔开的就是就是参数了啊。

你这完全是自己把自己绕进去了,简单的东西让你自己绕复杂了。
  1. //1.exe
  2. int main(int argc, char** argv) {
  3.     printf("argc = %d/n", argc);
  4.     for (int i = 0; i < argc; i++)
  5.     {
  6.         printf("%s ", *argv++);
  7.     }
  8.     printf("\n");
  9.     return 0;
  10. }
复制代码

  1. //2.exe
  2. int main(int argc, char** argv) {
  3.     system("1.exe 11 22");
  4.     return 0;
  5. }
复制代码


全编译了,运行2.exe看看,还不明白我也解释不了啦。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-8-15 12:43

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表