C 我如何处理main中的参数? #包括 int main(int n){ int n; printf(“%d/n”,n); 返回0; }
我将了解main中的参数是如何工作的,并就我在这段代码中的错误征求建议。要处理参数,需要两个参数:C 我如何处理main中的参数? #包括 int main(int n){ int n; printf(“%d/n”,n); 返回0; },c,main,C,Main,我将了解main中的参数是如何工作的,并就我在这段代码中的错误征求建议。要处理参数,需要两个参数: #include <stdio.h> int main(int n){ int n; printf("%d/n",n); return 0; } #包括 int main(int argc,char*argv[]) { //用argv做点什么 返回0; } argv是一个字符串数组,以null结尾并包含参数(第一个参数是可执行文件的名称) argc是参数的计数(数组ar
#include <stdio.h>
int main(int n){
int n;
printf("%d/n",n);
return 0;
}
#包括
int main(int argc,char*argv[])
{
//用argv做点什么
返回0;
}
- argv是一个字符串数组,以null结尾并包含参数(第一个参数是可执行文件的名称)
- argc是参数的计数(数组argv的长度)
#include <stdio.h>
int main (int argc, char *argv[])
{
//Do someting with argv
return 0;
}
#包括
intmain(intargc,char*argv[]){
如果(argc>1)
printf(“%s\n”,argv[1]);
其他的
printf(“缺少参数。\n”);
返回0;
}
main
功能原型只能是其中之一:
#include <stdio.h>
int main(int argc, char *argv[]){
if(argc > 1)
printf("%s\n",argv[1]);
else
printf("argument missing.\n");
return 0;
}
如果您查看最后两个原型,有两个参数。第一个是传递给程序的参数数,第二个是参数列表。第一个参数(argv[0]
)始终保留给程序名
所以你可以这样做:
int main();
int main(int argc, char *argv[]); (*) Check my comment for this one.
int main(int argc, char **argv);
现在,您可以将该参数传递给程序(/program\u name 15
)并将其打印出来
注意:atoi
仅用于演示目的
引用标准:
程序启动时调用的函数名为main
。实现声明没有
此功能的原型。它应定义为int返回类型,且不包含
参数:
#include <stdio.h>
int main(int n){
int n;
printf("%d/n",n);
return 0;
}
或者使用两个参数(此处称为argc和argv,但可以使用任何名称)
使用,因为它们是声明它们的函数的本地函数):
或同等品;)或者以其他实现定义的方式
如果已声明,则主功能的参数应符合以下要求
限制条件:
在这种情况下,你不需要这个论点,因为你什么都不做。但是你可能需要它来做类似的事情。您的代码不会编译,因为
intmain(int)
不是C提供的重载main方法之一
int main(int argc, char *argv[]) { /* ... */ }
#包括
int-anotherMethod(INTA);
int main(){
int n=非热法(5);
printf(“%d/n”,n);
返回0;
}
int-anotherMethod(int-a){
a=a+5;
返回a;
}
参数可以传递给main,以便在命令行参数中使用。您应该替换main函数:
#include <stdio.h>
int anotherMethod(int a);
int main(){
int n = anotherMethod(5);
printf("%d/n",n);
return 0;
}
int anotherMethod(int a){
a = a + 5;
return a;
}
您将获得以下输出:
./foo 1 2 3
main
的参数的工作方式如下:
foo
1
2
3
将此文件编译成二进制文件,将其称为yourbin,然后在shell中执行时:
int main(int argc, char ** argv) {
// your code
}
argc
的值是传入的参数数,在本例中为2,argv
是指向C字符串数组的指针,在本例中为“/yourbin”、“arg1”、“arg2”
因此,您的整数
n
将是从命令行传入的参数数。我建议您阅读一下C中的作用域
这里有一些关于和这个的链接
在这种情况下,如果要在程序中使用n变量,可以根据语言标准检查第一条注释,
main
采用以下形式之一:
./yourbin arg1 arg2
或
在第二种形式中,argc
包含传递给main
的命令行参数的数量,而argv
是包含参数本身的字符串向量。第一个参数(argv[0]
)是用于调用程序的命令,因此argc
始终至少为11
一个实现可以自由地为main
定义额外的签名-检查编译器文档
快速脏示例:从命令行中获取两个整数,将它们相加,然后打印结果(假设为C99):
#包括
#包括
#包括
整数转换(字符*arg,整数*val)
{
int结果=1;
char*chk;
int x=strtol(arg和chk,10);
如果(!isspace(*chk)&&*chk!=0)
{
结果=0;
fprintf(stderr,“%s不是有效的整数!\n”,arg);
返回0;
}
*val=x;
返回1;
}
int main(int argc,字符**argv)
{
如果(argc<3)
{
fprintf(标准,“用法:%s x y\n”,argv[0]);
出口(0);
}
int x,y;
if(转换(argv[1],&x)和转换(argv[2],&y))
{
printf(“%d\n”,x+y);
}
返回0;
}
谁破坏了IE的代码格式
1.这对于所谓的托管实现是正确的;基本上,任何在操作系统下运行的东西。还有一些独立的实现,通常是嵌入式系统,它们可以自由定义
int main(int argc, char ** argv) {
// your code
}
./yourbin arg1 arg2
int main( void )
int main( int argc, char **argv ) // or char *argv[]
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int convert( char *arg, int *val )
{
int result = 1;
char *chk;
int x = strtol( arg, &chk, 10 );
if ( !isspace( *chk ) && *chk != 0 )
{
result = 0;
fprintf( stderr, "%s is not a valid integer!\n", arg );
return 0;
}
*val = x;
return 1;
}
int main( int argc, char **argv )
{
if ( argc < 3 )
{
fprintf( stderr, "USAGE: %s x y\n", argv[0] );
exit( 0 );
}
int x, y;
if ( convert( argv[1], &x) && convert( argv[2], &y ))
{
printf( "%d\n", x + y );
}
return 0;
}