gpt4 book ai didi

c - 使用命令行参数的程序中的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:07 24 4
gpt4 key购买 nike

我正在尝试编写一个程序来找出 10 个数中最大和最小的数。

要使用我的程序,您必须使用命令行参数 -l 然后使用数字来确定最大数字,对于最小数字的命令 -s 也是如此。

但是,当我根本不输入命令而只是尝试运行程序时,我收到了一个段错误。不确定我哪里出错了。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
int i;
int min,max,num;
char *argv1 = argv[1];
char *small = "-s";
char *large = "-l";
min=max=0;
if (0==strcmp(argv1, small))
{

for (i=2; i<argc; i++)
{
num=atoi(argv[i]);
if(i==2)
{
min=num;
}
else
{
if(min>num)min=num;
}
}
printf("The smallest number is %d\n",min);
}
else if (0==strcmp(argv1, large))
{

for (i=2; i<argc; i++)
{
num=atoi(argv[i]);
if(i==2)
{
max=num;
}
else
{
if(max<num)max=num;
}
}
printf("The largest number is %d\n",max);
}
else
{
printf("Invalid option");
}
return 0;
}

最佳答案

在访问参数之前检查参数的数量。

int main(int argc, char* argv[])
{
int i;
int min,max,num;
char *argv1 = argv[1];
char *small = "-s";
char *large = "-l";
/* add from here */
if(argc < 2)
{
fprintf(stderr, "Usage: %s command numbers...\n", argc > 0 ? argv[0] : "");
return 1;
}
/* add until here */
min=max=0;

关于c - 使用命令行参数的程序中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com