main函数参数如何传入数组指针

chehengzhi 2010-05-19 05:27:55
在函数main (int argc, char *argv[])中
argv如何传入数组指针呀?

下面的语句有问题吗?
short in_data[160];
BYTE out_data[160*2];
CHAR czRun[2000];
memset(in_data,1,320);
sprintf(czRun, "coder.exe %s %s",in_data,(short*)in_data);
WinExec(czRun, SW_MINIMIZE);

参数能正确传入吗?
...全文
405 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chehengzhi 2010-05-20
  • 打赏
  • 举报
回复
谢谢解答,自己昨天也做了一下试验,输入参数确实如你所说。
但是还有一个问题。
coder.exe是一个编码函数,需要传入2个参数,其中第一个参数是输入数组,第二个参数是输出数组。

按我这种写法,能得到输出吗?
要怎么写才行?

[Quote=引用 10 楼 myth_cn 的回复:]

如果把一个程序的指针传入另一个程序,那是没用的
不过你这不是要传入一个指针,传的还是字符串嘛,只要你把这个字符串拼接好就行了
sprintf(czRun, "coder.exe %s %s",in_data,(short*)in_data);
你的in_data里面存的是什么数据,最好用char数组,然后拼接字符串
[/Quote]
Myth_cn 2010-05-20
  • 打赏
  • 举报
回复
如果把一个程序的指针传入另一个程序,那是没用的
不过你这不是要传入一个指针,传的还是字符串嘛,只要你把这个字符串拼接好就行了
sprintf(czRun, "coder.exe %s %s",in_data,(short*)in_data);
你的in_data里面存的是什么数据,最好用char数组,然后拼接字符串
chehengzhi 2010-05-20
  • 打赏
  • 举报
回复
我可能没说清楚
代码中coder.exe为一个C语言程序。
我在VC的应用程序中调用该C程序
coder.exe中的main函数希望接收2个指针作为参数
第一个为输入参数,第二个为输出参数。
使用sprintf输出一个命令行来执行。
请问高手,这样做有问题吗?

[Quote=引用楼主 chehengzhi 的回复:]
在函数main (int argc, char *argv[])中
argv如何传入数组指针呀?

下面的语句有问题吗?
short in_data[160];
BYTE out_data[160*2];
CHAR czRun[2000];
memset(in_data,1,320);
sprintf(czRun, "coder.exe %s %s",in_data,……
[/Quote]
fsroot 2010-05-20
  • 打赏
  • 举报
回复
用命令行提示符执行程序,第一个参数为程序名称(也就是argv[0]),后面的为你要传的参数。用空格隔开 。
argc的数值为你要传递的参数+1(程序名称)
cj83111 2010-05-20
  • 打赏
  • 举报
回复
给楼主点思路:在linux C 中,要想在一个进程中启动另一个程序,涉及到进程中的exec函数的用法。
例如:
execve("coder",argv,environ);这样就可以把参数传递到coder的mian函数了。
Myth_cn 2010-05-20
  • 打赏
  • 举报
回复
得到输出是不可能的,需要用的别的进程间通信的方法.简单点的话,写文件吧...
匚匚 2010-05-19
  • 打赏
  • 举报
回复
这本书的第150页上的有关数组名的内容正确吗?
[Quote=引用 5 楼 blackkey2008 的回复:]
建议楼主看看《C和指针》 高级指针话题
[/Quote]
__Jun__ 2010-05-19
  • 打赏
  • 举报
回复
argc是参数总数,包括运行的程序名称。
argv是参数的二维数。
eg. test aa bb cc dd
int argc=5
char *argv[]={"test", "aa", "bb", "cc", "dd"};
huanmie_09 2010-05-19
  • 打赏
  • 举报
回复
sprintf(czRun, "coder.exe %s %s",in_data,(short*)in_data);
in_data为short型数组,怎么用控制符%s?
blackkey2008 2010-05-19
  • 打赏
  • 举报
回复
建议楼主看看《C和指针》 高级指针话题
十八道胡同 2010-05-19
  • 打赏
  • 举报
回复
用命令行来给int argc, char *argv[])赋值
selooloo 2010-05-19
  • 打赏
  • 举报
回复
没见你使用argv
huanmie_09 2010-05-19
  • 打赏
  • 举报
回复
如输入test.exe arg1 arg2
那么argc = 3;表示命令行参数的个数.
argv[0] = "test.exe";
argv[1] = "arg1";
argv[2] = "arg2";
pengzhixi 2010-05-19
  • 打赏
  • 举报
回复
命令行接收。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧