本文主要是介绍[嵌入式 C 语言] int main(int argc, char *argv[]),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在C语言中,main
函数是程序的起点,也就是执行的入口点。main
函数可以接受命令行参数,并且通常定义如下:
int main(int argc, char *argv[])
-
int argc
: 这个参数代表“参数计数”(Argument Count),表示传递给程序的命令行参数的数量,包括程序本身的名称。例如,如果你的程序名为myprogram
并且你在命令行中输入myprogram arg1 arg2
,那么argc
将为3。 -
char *argv[]
: 这是一个字符指针数组,每个元素指向一个字符串。这些字符串是实际的命令行参数值。argv[0]
通常包含程序的名称(即调用程序的命令),而argv[1]
到argv[argc-1]
包含其他所有参数。继续上面的例子,argv[0]
会是"myprogram"
,argv[1]
会是"arg1"
,argv[2]
会是"arg2"
。
假设我们有一个程序,它的目的是简单地打印出所有传递给它的命令行参数。我们将这个程序命名为
printarg
#include <stdio.h>int main(int argc, char *argv[]) {int i;// 打印程序名和所有参数printf("Program name: %s, Argc num:%d\n", argv[0], argc);if (argc > 1) {printf("Arguments passed to the program:\n");// 遍历所有参数for (i = 1; i < argc; i++) {printf("%d: %s\n", i, argv[i]);}} else {printf("No additional arguments provided.\n");}return 0;
}
要编译这个程序,你可以使用 gcc:
gcc -o printargs printargs.c
然后,你可以通过命令行传递不同的参数来运行这个程序:
可以看出 argv[0] 存的是文件名字,argv[1] 存的是输入的第一个参数的字符,argv[2] 存的是输入的第二个参数的字符,以此类推。而 argc 就是指参数的个数,只输入./printarg的时候,参数个数就为1了。
还一个问题是我的输出缺少
#
和*8
参数,可能是由于某些特殊字符的处理问题或者环境配置问题。这是因为某些特殊字符可能会被 shell 解析。例如,#
可能会被当作注释符,但通常在命令行参数中不会有问题。*
可能会被 shell 解释为通配符。如果我的目录下有匹配的文件或目录,*
会被展开。
为了排除这些问题,我们可以尝试以下方法:
- 使用引号将特殊字符括起来:
./printarg 1 2 3 arg4 acg5 q '#' '*8'
- 或者使用转义字符
\
来避免特殊字符被 shell 解释:
./printarg 1 2 3 arg4 acg5 q \# \*8
确保这些特殊字符在传递给程序之前没有被 shell 修改或忽略。这样应该能够确保所有参数都被正确地传递给程序。
这篇关于[嵌入式 C 语言] int main(int argc, char *argv[])的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!