Проверить заданные предложения на ключевое слово, которое задает юзер в C (си)
Ввести последовательность предложений и ключевое слово. Определить предложения, которые содержат заданное ключевое слово.
Пример:
Введите ключевое слово: Привет
Введите строки: Как дела? Привет мир. Си ван лав. Передавай привет.
Вивод:
Привет мир.
Передвай привет
Попытался написать сам, но не знаю как вивести всю строку содержащую ключевое слово.
#include <stdio.h>
#include <string.h>
int main()
{
char kword[32], strings[256];
char i;
printf("Enter key word: ");
gets(kword);
printf("Enter strings: ");
gets(strings);
char *pch = strtok(strings, " ");
while (pch != NULL)
{
if (strcmp(kword, pch) == 0)
{
puts(pch);
}
pch = strtok(NULL, " ");
}
getchar();
getchar();
}
Ответы (1 шт):
Автор решения: npirate
→ Ссылка
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
char kword[32], strings[256];
int count = 0;
printf("Enter key word: ");
gets_s(kword);
printf("Enter strings: ");
gets_s(strings);
for (int i = 0; i < strlen(kword); i++)
if(isupper(kword[i]))
kword[i] = tolower(kword[i]);
for (int i = 0; i < strlen(strings); i++)
if (strings[i] == '.' || strings[i] == '!' || strings[i] == '?')
count++;
char ** pch = (char **) malloc(100);
pch[0] = strtok(strings, ".!?");
int n = 0;
while (pch[n] != NULL)
{
n++;
pch[n] = strtok(NULL, ".!?");
}
for (int i = 0; i < n; i++) {
char * str = (char *)malloc(strlen(pch[i]) + 1);
for (int j = 0; j < strlen(pch[i]) + 1; j++) {
str[j] = pch[i][j];
}
str[strlen(pch[i])] = '\0';
for (int j = 0; j < strlen(pch[i]); j++)
if(isupper(pch[i][j]))
pch[i][j] = tolower(pch[i][j]);
char * w = strtok(pch[i], " ,-:");
while (w != NULL) {
if (strcmp(kword, w) == 0) {
printf("%s \n", str);
break;
}
w = strtok(NULL, " ,-:");
}
}
getchar();
getchar();
}