Как посчитать количество слов, которые имеют только определенное слово как суффикс и только как суффикс? - PullRequest
1 голос
/ 09 июля 2019

Итак, у меня есть это, и я хочу:

For the word "are":

caramare
aresdn
lasrare
aresare
mare

We have n=3, поскольку только 3 слова оканчиваются на нашем конкретном слове и содержат его только один раз.Если я читаю неправильное слово, например, "Арес", 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 Ответ

1 голос
/ 09 июля 2019

Одна проблема заключается в том, что 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);, чтобы пользователь не мог переполнить ваш входной буфер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...