c - 什么是输入参数是_
问题描述
我想知道为什么没有参数的结果是 1。
int main(int argcount, char *arglist[]) {
int i;
printf("Number of arguments %d\n",argcount);
printf("Arguments list:\n");
for (int i=0;i<argcount;i++)
printf("%s\n",arglist[i]);
return EXIT_SUCCESS;
}
解决方案
从标准(C11)中,特别注意粗体位:
如果它们被声明,主函数的参数应遵守以下约束:
- 的值
argc
应为非负数。argv[argc]
应为空指针。- 如果 的值
argc
大于零,则argv[0]
通过argv[argc-1]
inclusive 的数组成员应包含指向字符串的指针,这些指针在程序启动之前由宿主环境赋予实现定义的值。目的是从托管环境中的其他地方向程序提供在程序启动之前确定的信息。如果主机环境不能提供大写和小写字母的字符串,则实现应确保以小写形式接收字符串。- 如果 的值
argc
大于零,则 指向的字符串argv[0]
代表程序名;argv[0][0]
如果程序名在宿主环境中不可用,则应为空字符。如果 的值argc
大于 1,则argv[1]
through指向的字符串argv[argc-1]
表示程序参数。- 数组所指向的参数
argc
和字符串应可由程序修改,并在程序启动和程序终止之间保留其最后存储的值。argv
argv
换句话说,argc
包括表示程序名称的参数 - 程序的实际参数从argv[1]
. 根据以下脚本,从程序输出中可以明显看出这一点,其中第一个参数是程序名称:
pax> cat testprog.c
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Argument count: %d\n", argc);
printf("Arguments:\n");
for (int i = 0; i < argc; i++)
printf(" %s\n", argv[i]);
return 0;
}
pax> gcc --std=c11 -o testprog testprog.c && ./testprog 1 2 3
Argument count: 4
Arguments:
./testprog
1
2
3
pax> ./testprog
Argument count: 1
Arguments:
./testprog
推荐阅读
- python - 有没有办法使用 Python csv 阅读器模块提取一些列?
- vue.js - 验证 vue html/template 中的脚本引用
- ios - 键盘打开时如何固定小部件布局?
- node.js - Twitter 无法读取 SSR vue.js 应用程序上的元标记
- python - 使用 REST API 批量上传到 Azure Data Lake Gen 2
- laravel - 如何在 Laravel 6 LazyCollection 中使用 orderBy?
- eclipse - 无法使用 Appium 在 Eclipse 中使用 Selenium 创建第一个程序
- java - 如何通过用户输入的字符值过滤数组列表
- render - 在 show-hint.js 中更改 codemirror 渲染功能
- python - 如果其他列不等于特定字符串,则 Pandas 更新列,否则什么都没有