如何在c语言中将参数传递给main()函数?

时间:2016-05-03 20:20:32

标签: c atoi

我从c编程语言书中为练习1-20编写了一个程序。

该计划是:

#include <stdio.h>
#include <stdlib.h> /* for atoi() */
main(int argc, char *argv[]) {
    int c,i,n;
    if (argv[1])
        n=atoi(argv[1]);
    while((c=getchar())!=EOF) {
        if(c!='\t') {
            printf("%c",c);
        }else
        {
            for(i=1;i<=n;i++) {
                printf(" ");
            }
        }
    }
}

如何在没有atoi()函数的情况下用c语言将参数传递给main()函数?

3 个答案:

答案 0 :(得分:4)

程序的所有参数都以字符串形式传递,argc告诉您有多少参数和argv包含实际参数。

如果你需要一个数值,你必须以某种方式转换它们,你可以像你一样使用atoi,或者使用众多库中的一个来解析选项,比如getopt

您应该检查argc,而不是检查argv[1],所以

if (argc >= 2)
    n=atoi(argv[1]);

查看this方便指南。

答案 1 :(得分:1)

这是一个小程序,它打印传递给程序的所有参数,包括程序名称本身。

int main(int argc, char *argv[]) {
    int i;
    for (i = 0; i < argc; i++) {
        printf("Arg %d: %s\n", i, argv[i]);
    }
    return 1;
}

答案 2 :(得分:1)

传递给main的参数是您在命令行中传递的参数。示例:您的二进制文件称为a.out:

./a.out 5

argv数组现在有两个(argc)条目:[0] "./a.out" [1] "5"

在访问argv之前,您应该始终测试argc是否足够大。

顺便说一下:atoi只是将传递的String(argv[1])转换为整数