【问题标题】:Count number of same letters in a string计算字符串中相同字母的数量
【发布时间】:2014-12-11 18:23:00
【问题描述】:

我一直在阅读“C 编程语言”并且遇到了这个问题,对于我发送的任何给定字符串,我的输出都是 0

我的函数如下所示:

 int number_of_repeating(char *word,char k){
    int b=0,len=0,i;
    gets(word);
    len=strlen(word);
    for(i=0;i<len;i++){
        if(word[i]==k)
        b++;
    }
    return  b;
}

问题

我给他发一个单词,例如:Jhonny,和字符n,所以它应该计算单词中的n个数(在这种情况下输出应该是2)。

我做错了什么?

【问题讨论】:

  • 请正确格式化问题并坚持使用您使用的实际语言。谢谢。
  • 你能展示一下代码是如何被调用的吗?
  • 如果您将“Johnny”作为参数传递,则不需要gets,只需完全删除该行即可。
  • number=bnumber_of_repeating(word,c); 上面输入了单词,上面输入了这样的字符:printf("enter a word"); scanf("%s",word); printf("enter a character"); scanf("%c",&amp;c);
  • 只要don't ever use gets(),即使您确实需要获得输入。使用 fgets()` 或其他可以安全使用的东西。

标签: c string c-strings


【解决方案1】:
#include <stdio.h>
int number_of_repeating(char *word,char k){
    int b=0,len=0,i;
    gets(word); //<------- You need to remove this one because it may overwrite
    len=strlen(word);
    for(i=0;i<len;i++){
        if(word[i]==k)
        b++;
    }
    return  b;
}
int main(void) {
    // your code goes here
    printf("%d",number_of_repeating("johnny",'n'));
    return 0;
}

【讨论】:

    【解决方案2】:

    如果你传入的字符串没有理由调用gets(),那可能是它,或者你的类型可能是错误的。

    【讨论】:

      猜你喜欢
      • 2020-02-08
      • 2019-02-17
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多