Вывести слова строки, содержащие определенные буквы - C (СИ)
Формулировка задачи:
Вывести все слова , содержащие буквы которые входят в слово "файл".
Подскажите как их найти их и вывести.
#include <stdafx.h>
#include <stdio.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL,"RUS");
char str[] = "манрра, фр а алвл в во вовлл.";
int s = 0, i = 0, n = 0, u = 0;
int j;
for(j = 0; str[j]; j++){
if(str[j] == 'ф')
s++;
if(str[j] == 'а')
i++;
if(str[j] == 'й')
n++;
if(str[j] == 'л')
u++;
if(str[j] == '.')
break;
}
if(s == 1 && i == 1 && n == 1 && u == 1 )
printf("\n OK");
else printf("\n FAIL");
return 0;
}Решение задачи: «Вывести слова строки, содержащие определенные буквы»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main(){
char str[] = "rewt vxcv fdf sdf 4fds dflp";
char find[] = "file";
char tmp[128] = {0};
int lenFind = strlen(find);
int lenStr = strlen(str);
int i = 0, j = 0, k = 0, m = 0;
for(i = 0; i <= lenStr; i++) {
if(str[i] == ' ' || str[i] == '\0') {
j = 0;
while(j < k) {
for(m = 0; m < lenFind; m++) {
if(tmp[j] == find[m]) {
printf("[ %s ]\r\n", tmp);
goto Next;
}
}
j++;
}
Next: k = 0;
} else {
tmp[k++] = str[i];
}
}
getchar();
return 0;
}
Объяснение кода листинга программы
В этом коде на языке C происходит поиск подстрок в заданной строке, содержащих определенные буквы. Список действий:
- Подключить необходимые библиотеки
- Определить переменные:
- str - исходная строка
- find - строка, которую необходимо найти
- tmp - временная строка для хранения подстрок
- lenFind - длина строки find
- lenStr - длина строки str
- i, j, k, m - индексы для работы со строками
- Запустить цикл по всем символам строки str
- Внутри цикла проверять, является ли текущий символ пробелом или концом строки
- Если это так, то сбрасывать счетчик j и начинать сбор подстрок с начала
- Для каждой буквы из find проверять, содержится ли она в текущей подстроке
- Если да, то выводить подстроку и переходить к следующему этапу
- Если нет, то добавлять текущий символ в подстроку и увеличивать счетчик k
- После окончания цикла получить символ, нажатый пользователем, и завершить программу.