#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)
...