我从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()函数?
答案 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]
)转换为整数