c-分段错误:命令参数(argv)


#include<stdio.h>
#include <cs50.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, string argv[])
{
if (argc == 2)
{
printf ("%s n", argv[1]);

if (isdigit (argv[1]) !=0)
{
printf("Successn");
printf("%s n", argv[1]);
}
else
{
printf(" %s key n", argv[0]);
}
}
else
{
printf(" %s key n", argv[0]);
}
}

大家好,我正在尝试运行这个程序,它接受命令行参数并检查它们的数字。之后,我必须将它存储到一个变量中。我被卡住了,它给出了错误";分段故障";。我在谷歌上搜索了一下,我认为这意味着程序无法读取值。请让我知道它为什么给出错误;分段故障";修复方法和方法。

我认为问题出在

isdigit (argv[1])

argv[1]的类型为char *,但isdigit()需要int

如果你想检查提供的参数是否都是数值,你必须选择

  • 循环argv[n]中的元素,并将它们逐个传递给isdigit()检查
  • 使用strtol()或类似方法检查有效性

第13行中的错误,你需要做

...
13: if (isdigit (atoi(argv[1])) != 0)
...

最新更新