d**e 发帖数: 6098 | 1 我用的是ubuntu, gcc 4.2.4
------------------------
#include
int main(int argc, char * argv[])
{
printf("argc = %d\n", argc);
return 0;
}
------------------------
比如我传入一个参数,输出是 2,正确
但如果我传入的是"*"符号,结果是 13 ... 这是为什么呢?
似乎只要有"*",argc至少就是13了。
谢谢
$ ./test 12 * 3
argc = 15
$ ./test *
argc = 13
$./test 12
argc = 2 |
a*********9 发帖数: 523 | |
r***u 发帖数: 241 | 3 *被shell替换成了当前目录的文件名
【在 d**e 的大作中提到】 : 我用的是ubuntu, gcc 4.2.4 : ------------------------ : #include : int main(int argc, char * argv[]) : { : printf("argc = %d\n", argc); : return 0; : } : ------------------------ : 比如我传入一个参数,输出是 2,正确
|
x***y 发帖数: 633 | 4 * is expanded to all the items in the current directory.
I guess you have 12 item in that directory.
【在 d**e 的大作中提到】 : 我用的是ubuntu, gcc 4.2.4 : ------------------------ : #include : int main(int argc, char * argv[]) : { : printf("argc = %d\n", argc); : return 0; : } : ------------------------ : 比如我传入一个参数,输出是 2,正确
|
d**e 发帖数: 6098 | 5 我也觉得很怪,但没其它电脑。
而且查过"*"不是转义字符。
再试了一下,要传入 "\*" 时才正确输出。
【在 a*********9 的大作中提到】 : 建议你在别的PLATFORM试试
|
d**e 发帖数: 6098 | 6 原来如此。谢谢
【在 x***y 的大作中提到】 : * is expanded to all the items in the current directory. : I guess you have 12 item in that directory.
|
r****o 发帖数: 1950 | 7 I tested in VC, input "test *"
output "argc=2"
【在 d**e 的大作中提到】 : 我用的是ubuntu, gcc 4.2.4 : ------------------------ : #include : int main(int argc, char * argv[]) : { : printf("argc = %d\n", argc); : return 0; : } : ------------------------ : 比如我传入一个参数,输出是 2,正确
|
d**e 发帖数: 6098 | 8 嗯,看来这是shell特有的,前面的同学解释了。
谢谢各位 :)
【在 r****o 的大作中提到】 : I tested in VC, input "test *" : output "argc=2"
|