在 C 语言中通过命令行参数传递“*”会列出目录中的所有文件

Passing "*" through command line arguments in C lists all files in directory

提问人:Reeson 提问时间:1/4/2023 更新时间:1/4/2023 访问量:74

问:

我正在尝试从命令行参数传递 3 个字符串,目的是将数学方程式作为字符串传递,然后将其转换为数学运算符。int

当我运行时,我得到:正如预期的那样。 但是当我运行时,会导致以下情况发生:./program 1 + 1argv[0]: ./program , argv[1]: 1, argv[2]: +, argv[3]: 1./program 1 * 1argv[2]

argv[1] = 1 argv[2] = file_01 argv[3] = file_02 argv[4] = file_03 argv[5] = file_04 argv[6] = file_05 argv[7] = file_06 argv[8] = 1

这些文件与程序的可执行文件位于同一文件夹中。

所以我无法通过命令行。*

printf("Value stored in argv [2]:%c\n", *argv[2]);

结果是 存储在argv[2]:C

C 参数 传递 命令行参数

评论

0赞 Scott Hunter 1/4/2023
你试过加引号吗?或者将整个表达式放在引号中,并在程序中解析它?*
1赞 Jabberwocky 1/4/2023
将展开到当前目录中的文件名。将 * 放在引号之间,例如 .尝试键入,然后在命令行上键入。*./program 1 "*" 1echo "*"echo *
0赞 Reeson 1/4/2023
出于我正在从事的项目的目的,它需要这样运行.它适用于 1 + 1、1 - 1、4 / 2,这些字符字符串都正确传递,但由于某种原因没有。./program 1 * 1*
0赞 Shawn 1/4/2023
这些其他字符都不是 shell 文件名扩展中使用的 glob 通配符,这就是原因。
1赞 Gerhardh 1/4/2023
旁注:这与 C 无关,而是一个 shell 问题。

答: 暂无答案