首先,我对这段代码的目标是:将一个句子放入一个C字符串中。遍历句子,查看特定字母的实例数。
这段代码有点工作但没有给出正确的数字?不确定原因:
#include <stdio.h>
#include <string.h>
int tracker=0;
int letterCount (char *sentence)
{
int s=strlen(sentence);
int i=0;
for (i=0; i<s; i++){
if (sentence[i]=='h') {
tracker++;
}
}
return tracker;
}
int main(int argc, const char * argv[])
{
char *string="Hi there, what's going on? How's it going?";
letterCount(string);
printf("this sentensce has %i H's", tracker);
return 0;
}
我得到的输出:
this sentensce has 2 H's
不太对劲。有什么想法吗?
答案 0 :(得分:1)
如果你的意思是不区分大小写的H:
,这是正确的代码#include <stdio.h>
#include <string.h>
int tracker=0;
int letterCount (char *sentence)
{
int s=strlen(sentence);
int i=0;
for (i=0; i<s; i++){
if (sentence[i]=='h' || sentence[i]=='H') { //'h' is not the same as 'H'
tracker++;
}
}
return tracker;
}
int main(int argc, const char * argv[])
{
char *string="Hi there, what's going on? How's it going?";
letterCount(string);
printf("this sentensce has %i H's", tracker);
return 0;
}
你刚刚在代码中拼错了小写和大写字母。 请记住,C语言区分大小写!
答案 1 :(得分:0)
虽然您的标签谈到了H
的数量,但您的letterCount
代替了h
- 而且在我看来,您提供的输入确实有两个小写h
的实例,就像它说的那样。
如果您想将它们统计在一起,您可以考虑使用tolower
或toupper
过滤每个输入,然后再检查您的内容。
答案 2 :(得分:0)
这个数字对我来说是正确的:你在那句话中有2'h'字符。如果你想计算'H'字符,那么你需要单独检查。
答案 3 :(得分:0)
size_t letterCount(const char* sentence, char c)
{
size_t count = 0;
while(sentence)
{
count += (*sentence == c);
++sentence;
}
return count;
}
我们在这看到什么?