gpt4 book ai didi

c - 使用星号时传递给 C 程序的参数发生变化

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:23 25 4
gpt4 key购买 nike

我有一个简单的 C 程序,我想在其中打印所有具有某种扩展名的文件的名称。我会提供路径和扩展名作为程序的参数。

我决定做一个简单的 main 来验证我的想法。

当我使用命令 ./main *.txt 运行我的程序时,如果该目录中没有 .txt 文件,我的程序将只输出 *. TXT。如果有两个文件,例如 file1.txt 和 file2.txt,输出将是 file1.txtfile2.txt。此外,许多程序参数也发生了变化。

这是我的程序

#include <stdio.h>

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 < argc; i++)
{
printf("%s\n", argv[i]);
}
return 0;
}

你能给我解释一下为什么会这样吗?正确的做法是什么?

最佳答案

我假设您使用的是 Linux,* 等特殊字符的扩展由 shell 完成。这意味着如果你执行你的程序,例如

> ./myprog *.txt

shell*.txt 扩展为“当前目录中以 .txt 结尾的所有文件”并传递 < em>that 作为程序的命令行参数。如果您希望您的实际程序获得未扩展的字符串 *.txt,您必须以某种方式转义/引用它,如下所示:

> ./myprog '*.txt'

> ./myprog \*.txt

关于c - 使用星号时传递给 C 程序的参数发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57805204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com