如何计算仅具有特定词作为后缀且仅作为后缀的词的数量?

时间:2019-07-09 18:37:37

标签: c

所以我有这个,我想:

For the word "are":

caramare
aresdn
lasrare
aresare
mare

We have n=3,因为只有3个单词以我们的特定单词结尾,并且只能包含一次。 如果我读错单词,例如“ ares”,it will break the program.为什么会这样? 需要从以下位置启动程序:

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);
}

1 个答案:

答案 0 :(得分:1)

一个问题是,如果找不到指针,strstr返回NULL。然后,您将NULL指针传递给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);总是-像总是,总是,总是那样-设置一个限制-像scanf("%19s",s);这样用户不会溢出您的输入缓冲区。

相关问题