c命令行参数
给出少于3个参数时出现分段错误。 如果给出的参数少于3个,则应打印的参数不足,但会给出错误分段错误 输入:./a raju 预期输出:参数不足 当argc为2时,argv[2]将为空。当程序运行的第一件事就是执行这行代码时,您希望它能做什么 重构以使其下面的条件形成对该条件的防范,这里有一些更接近您可能想要的:c命令行参数,c,command-line,command,C,Command Line,Command,给出少于3个参数时出现分段错误。 如果给出的参数少于3个,则应打印的参数不足,但会给出错误分段错误 输入:./a raju 预期输出:参数不足 当argc为2时,argv[2]将为空。当程序运行的第一件事就是执行这行代码时,您希望它能做什么 重构以使其下面的条件形成对该条件的防范,这里有一些更接近您可能想要的: int c = convert(argv[2]); 另外,由于argv[0]通常是程序名而不是参数,argv[1]和argv[2]将是您的参数,argv[3]将为空,如果您计算它们,您
int c = convert(argv[2]);
另外,由于argv[0]通常是程序名而不是参数,argv[1]和argv[2]将是您的参数,argv[3]将为空,如果您计算它们,您将计算两个参数,而不是三个;当给出三个参数时,预期argc==4。您可能会感兴趣。它处理命令行参数的所有标准特性。在检查之前使用argv[2]是个坏主意,我想。。。真的,难道你不能校对你自己的代码而不是疯狂的格式化吗?
int c = convert(argv[2]);
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int convert(char *str)
{
int i, number = 0;
for (i = 0; str[i] != '\0'; ++i) {
number = number * 10 + str[i] - '0';
}
return number;
}
int main(int argc, char *argv[])
{
if (argc != 3) {
printf( argc < 3 ? "Not Enough Arguments\n"
/*argc > 3*/ : "Too Many Arguments\n" );
exit(EXIT_FAILURE);
}
int c = convert(argv[2]);
for (int j = 0; j < c; j++) {
printf("Hello, %s!\n", argv[1]);
}
return 0;
}