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

How can i pass arguments to main() function in c language?

我为 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() 函数?

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

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

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

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

查看 this 实用指南。

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

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

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

./a.out 5

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

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

顺便说一句:atoi 只是将传递的字符串 (argv[1]) 转换为整数