所以我有这个,我想:

For the word "are":

caramare
aresdn
lasrare
aresare
mare

We have n=3因为只有3个单词以我们特定的单词结尾,并且只有一次在里面。
如果我读错了单词,比如“ares”,为什么?
需要从以下位置启动程序:
n=.....;
for(i=1;i<=11;i++)
{ cin>>s; | scanf(“%s”,s);
 ............
}

这就是我尝试过的:
#include <stdio.h>
#include <string.h>
int main()
{
    char s[20][20];
    int n=0;
    int i;
    for(i=1;i<=11;i++)
    {
        scanf("%s",s);
        if(strcmp ( strstr("are",s[i]) ,"are") ==0 )
        {
            n++;
        }

    }
    printf("%d",n);
}

最佳答案

一个问题是,如果找不到针,strstr返回空值。然后将空指针传递给strcmp,这会出错。
你需要把它分成:

    char* tmp = strstr("are",s[i]);
    if (tmp)
    {
        if (strcmp ( tmp ,"are") ==0 )
        {
            n++;
        }
    }

还有这个
char s[20][20];

应该是:
char s[20];

请永远不要,永远不要做总是-像总是,所有的方式,所有的方式-放一个限制-像scanf("%s",s);这样,用户不能溢出你的输入缓冲区。

关于c - 如何计算仅具有特定词作为后缀且仅作为后缀的词的数量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56958788/

10-11 21:14