【发布时间】:2020-10-31 13:58:22
【问题描述】:
编译代码时,我总是在布尔函数上得到“控制可能到达非空函数的结尾”,但不知道是什么原因造成的。
这是代码,谢谢
#include <stdio.h>
#include <math.h>
#include <cs50.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
bool digit_validation (string s);
int main (int argc, string argv[])
{
if((argc == 2) && (digit_validation(argv[1]) == true))
{
int key = atoi(argv[1]);
printf("%i\n", key);
}
else
{
printf("Usage: ./caesar key\n");
}
}
bool digit_validation (string s)
{
for (int i = 0, lenght = strlen (s); i < lenght; i++ )
{
if(isdigit(s[i]))
{
return true;
break;
}
else
{
return false;
}
}
}
【问题讨论】:
-
你的
main函数return有什么作用吗? -
如果根本没有输入
for,你的函数将不会返回值(长度为0)。 -
我对你的
for语句感到特别困惑,其中有一个if,它们都退出了。如果您要在第一次迭代中确定保释,为什么还要循环? -
当
s为空字符串时,您的digit_validation函数将不会执行return语句。 -
PSA:这是
length而不是lenght。