【发布时间】:2021-02-19 04:08:20
【问题描述】:
我创建了一些代码,可以检查输入文本中的双字符。如果我的所有代码都在我的 main 函数中,我就可以开始工作了,但是当我想创建一个额外的函数时会遇到一些麻烦。我得到的错误如下:“错误:控制可能到达非无效函数的结尾”,我已经确定系统无法识别我的 count_double_characters 函数的返回值。
你能帮我理解我做错了什么吗?
#include <stdio.h>
#include <string.h>
int count_double_characters(char *ch);
int main(void)
{
char input[400];
printf("Write the text you want to check: ");
fgets(input, sizeof(input), stdin);
count_double_characters(input);
}
int count_double_characters(char *ch)
{
char n = strlen(ch);
int count_double = 0;
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (ch[i] == ch[j])
{
count_double++;
}
}
}
if (count_double > 0)
{
char s = printf("Its a double!\n");
return s;
}
else if (count_double == 0)
{
char d = printf("Looks good\n");
return d;
}
}
【问题讨论】:
-
问题是:你有一个
if块返回一个值,一个else if块也返回一个值,但你没有最终的else块返回一个值,在换句话说:您需要涵盖所有情况。 -
谢谢!我得到了工作的代码:)
-
在更高级别的代码中使用
char input[400];,char n = strlen(ch);是狡猾的。推荐size_t n = strlen(ch); -
感谢您的回答。我可以看到这更有意义:) 谢谢!
标签: c function return-value