#include<stdio.h>
int main(int argc,char* argv[]){
printf("\n argc : %d \n",argc);
return 0;
}
输出:
[root@aman]# ./a.out *
argc : 8
我已经传递了两个参数,因此argc值必须为2,但它显示为8。 我想将*存储在数组中并比较输入的'*'字符串。
我正在编写一个工具来删除列表中的所有条目。因此我需要从“./a.out *”验证*是否输入。 如果输入我需要做与之对应的动作。有没有办法用作./a.out *并取用户输入的*。
答案 0 :(得分:6)
您的shell正在将*
扩展到当前文件夹中的文件列表。尝试用双引号或单引号括起来引用*
。
你可以通过迭代argv
并打印所有参数来发现自己。
答案 1 :(得分:2)
在类似UNIX的操作系统上,系统shell在执行命令之前会扩展像“*”这样的运算符。 *运算符将列出当前目录中的所有文件,并将其作为参数列表提供给您的程序。您的工作目录中很可能只有8个文件。如果你真的想在程序中提供*作为输入参数,请尝试将星号放在“*”中。
答案 2 :(得分:1)
运行二进制文件时,输入argv[]
被视为该目录中存在的文件数。
shell环境中的*
通常表示该目录中存在的所有文件。也许使用" "
可以根据需要考虑输入*
[string]。