gpt4 book ai didi

C主要参数

转载 作者:行者123 更新时间:2023-12-03 16:18:27 26 4
gpt4 key购买 nike

我写了一个必须显示主要参数的代码,但是当我编译它并键入“*”程序时,它显示了我的文件结构。
cmd中的命令如下所示:program.exe 1 2 3 *

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const* argv[]) {
for (int i=0; i<argc; i++) printf("%s\n", argv[i]);
return 0;
}
结果是:
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
我的问题是:是否可以强制程序打印“*”而不是列出文件。

最佳答案

mingw使程序执行参数的通配符扩展。将以下内容添加到您的程序中以禁用此行为:

int _CRT_glob = 0;

在unix世界中, shell 程序有望执行通配符扩展。

$ perl -le'print for @ARGV' *
a
b

在Windows世界中,通配符扩展留给应用程序。

>perl -le"print for @ARGV" *
*

这使得编写可移植程序变得棘手。由于mingw通常用于编译不是为Windows编写的程序,因此其C运行时库自动执行参数的通配符扩展。
a.c:

#include <stdio.h>

int main(int argc, char const* argv[]) {
for (int i=0; i<argc; i++)
printf("%s\n", argv[i]);

return 0;
}

>gcc -Wall -Wextra -pedantic-errors a.c -o a.exe & a *
a
a.c
a.exe

但是,mingw提供了一个解决方案。将以下内容添加到您的程序将禁用此行为:

int _CRT_glob = 0; 
a.c:

#include <stdio.h>

int _CRT_glob = 0;

int main(int argc, char const* argv[]) {
for (int i=0; i<argc; i++)
printf("%s\n", argv[i]);

return 0;
}

>gcc -Wall -Wextra -pedantic-errors a.c -o a.exe & a *
a
*

关于C主要参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60947192/

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