细分错误:命令参数(argv)

时间:2020-07-29 15:21:06

标签: c segmentation-fault command-line-arguments cs50

#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("Success\n");
        printf("%s \n", argv[1]);
     }
    else
     {
        printf(" %s key \n", argv[0]);
     }
  }
     else
     {
        printf(" %s key \n", argv[0]);
     }

}

大家好,我正在尝试运行该程序,该程序接受命令行参数并检查它们的数字,然后将其存储到变量中。我被卡住了,并且给出了错误“细分错误”。我用谷歌搜索它,我认为这意味着该程序无法读取该值。请让我知道为什么会给出错误,“细分错误”的含义以及如何解决该问题。

2 个答案:

答案 0 :(得分:4)

我相信问题出在

echo 'Hi!';

.php的类型为 isdigit (argv[1]) ,但是isdigit()期望为argv[1]

如果要检查提供的参数是否为全数字值,则必须选择其中一个

  • char *中的元素放在上方,然后将它们一一传递给int检查。
  • 使用strtol()或类似方法检查有效性。

答案 1 :(得分:1)

第13行中的错误 您需要做一个

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