我有一个作业,需要编写一个函数,接受包含英语句子的数组,并返回该句子中最长单词的长度。以下是我目前编写的代码:
int longWordLength(char *s); // Function prototype
int main() {
char str[80], *p;
printf("Enter a string: \n");
fgets(str, 80, stdin);
if (p = strchr(str,'\n'))
*p = '\0'; //converts newline to null
printf("longWordLength(): %d\n", longWordLength(str));
return 0;
}
int longWordLength(char *s) {
int count = 0, max = 0;
while (*s++ != '\0') {
if ((*s >= 'a' && *s <= 'z') || (*s >= 'A'&& *s <= 'Z')) {
count++;
} else {
if (count > max) {
max = count;
count = 0;
} else
count = 0; // word is not the longest
}
}
return max;
}
我已经长期尝试诊断这个问题,但是没有结果。
这在某些测试案例中实际运行,例如:
测试案例1:
Enter a string:
I am happy.
longWordLength(): 5
但对于像测试用例4这样的测试案例:
Enter a string:
Hello
longWordLength(): 4 <- it prints 4 instead of 5.
由于我是为学校任务工作,所以除了 <string.h>
库之外,我不被允许使用其他任何库。寻求任何人对我的问题的友好指导,因为我似乎真的无法找出问题所在。提前感谢您。
while (*s != '\0') { /* ... your code ... */ s++; }
- pmg<string.h>
以外的库中没有找到printf
和fgets
,那我建议你给教授打电话确认一下他们是否真的想让你自己编写这两个函数,因为<string.h>
库中都没有这两个函数。 - WhozCraiggcc -Wall -Wextra -g
,改进您的C代码以消除警告,然后使用GDB调试器来了解程序行为。改进您的C代码(希望改进其行为),并重复以上步骤直到满意。 - Basile Starynkevitch