C 为什么在使用isdigit函数时出现分段错误?
我在执行以下程序时遇到分段错误。不过,当我将变量argv更改为char*argv并生成后续指针时,代码似乎部分工作C 为什么在使用isdigit函数时出现分段错误?,c,cs50,C,Cs50,我在执行以下程序时遇到分段错误。不过,当我将变量argv更改为char*argv并生成后续指针时,代码似乎部分工作 int main(int argc, string argv[] ){ if(argc == 1) { printf("Error"); } else if (argc ==2 ) { if(isdigit(argv[1])) { int key = atoi (a
int main(int argc, string argv[] ){
if(argc == 1) {
printf("Error");
}
else if (argc ==2 )
{
if(isdigit(argv[1]))
{
int key = atoi (argv[1]);
printf("Success");
}
}
else {
printf("Error");
}
}
isdigit()
需要一个字符参数,但您正在传递一个指针。您可能想循环使用argv[1]
中的所有字符,并在调用atoi()
之前确保它们都是数字,因为您使用了cs50
标记,我们可能会假设string
是char*
,但您的代码没有显示任何包含,因此它不是真正确定的。最好不要在问题中使用非标准类型。printf(“错误”)代码>总是有问题的。错误属于stderr<代码>fprintf(标准,“错误”\n)代码>是首选。请注意,atoi
的行为在溢出/下溢时未定义。您可能应该(几乎可以肯定,“几乎”只是出于礼貌)使用strtol
。