argc argv赋值

能不能用代码实现这两个参数的赋值?
另外我下的代码第一句就是
if (argc != 6) {
fprintf(stderr, "usage: %s sigma k min input(ppm) output(ppm)\n", argv[0]);//典型错误提示
return 1;
}
请问我怎么一开始argc的值究竟是怎么确定的?

argc与argv是main函数的2个形式参数,一般定义为
int argc //整型变量
char *argv[]//字符指针数组

你所运行的程序本身具备一个文件名称,这时arc=1
一旦程序名字跟上几个彼此用空格隔开的字符串,就是带参数的,有几个参数,argc就在1的基础上加几个
例如 test.exe abc efg sss
argc=4,3个参数追问

于是我想问的是能不能用代码实现这两个参数的赋值?一定要用那个命令框事先输入吗?

追答

这个应该是不能自行修改的。
第一种就是那个命令框模式
第二种可以这样实现,我用的是vc
system("f:\\cprog\\Debug\\test.exe abc efg sss");使用系统调用
第三种可以利用vc debug,设置程序变量实现

如果你想修改这2个变量,那从主函数传递信息意义就不大了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-06
我们认识的一般是 void main(){},但实际上完整的写法是int main(int argc, char**argv){return 0;}
解释一下:
1. Linux中gcc编译器需要main的返回值不为空,所以int main。
2. 我们运行main()的时候是可以传入参数的,参数个数为argc(argu count),参数以字符串数组形式依次存入二维数组argv[][](arg variable)中。
3. 举个例子:假设编译出的可执行文件叫 a.out, 那么我们运行的时候在命令行中输入:
./a.out arg1 arg2 test
在main()函数中, argc = 4,argv[][] = {"a.out" , "arg1" , "arg2" , "test"}(第一个参数为运行文件名)
4. 在你的例子中
(1)if (argc != 6) 是判断传入的参数是否为5个。
(2)argv[0] 是表示运行的文件名。(如第3条中的a.out)

lz如还不明白可追问。
第2个回答  2011-07-06
可以 你可以在程序中赋值,因为只是两个变量,如果你不想要原来的值,就这样赋值。
argc=6;
argv={"xx","yy"};
第3个回答  2011-07-06
linux里面编译比较方便吧,反正是命令行模式的,后面跟几个参数也方便,
windows下用软件写代码运行,直接就运行,根本没写参数的机会
第4个回答  2011-07-06
main()的两个参数之一

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网