我有一个简单的C程序,我想在其中打印带有扩展名的所有文件的名称。我将提供路径和扩展名作为程序的参数。
我决定做一个简单的主体来检查我的想法。
当我使用command运行程序时./main *.txt
,如果.txt
该目录中没有文件,则程序将仅输出* .txt。并且在有两个文件的地方,例如,file1.txt和file2.txt的输出将是file1.txt
和file2.txt
。同样,许多程序参数也被更改。
这是我的程序
#include
int main(int argc, char* argv[])
{
if(argc <2)
{
printf("Missing file arguments\n");
return 0;
}
printf("%d\n", argc);
for(int i = 1; i
您能向我解释为什么会这样吗,正确的方法是什么?
1> Reinstate Mo..:
我假设您在Linux上,在其中扩展特殊字符(例如*
由shell进行)。这意味着如果您以如下方式执行程序,
> ./myprog *.txt
它是扩展为“当前目录中所有文件的末尾” 的shell,并将其作为命令行参数传递给您的程序。如果您想让您的实际程序获取未扩展的字符串,则必须以某种方式对其进行转义/引用,如下所示:*.txt
.txt
*.txt
> ./myprog '*.txt'
要么
> ./myprog \*.txt