Вывести слова строки, содержащие определенные буквы - 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 происходит поиск подстрок в заданной строке, содержащих определенные буквы. Список действий:

  1. Подключить необходимые библиотеки
  2. Определить переменные:
    • str - исходная строка
    • find - строка, которую необходимо найти
    • tmp - временная строка для хранения подстрок
    • lenFind - длина строки find
    • lenStr - длина строки str
    • i, j, k, m - индексы для работы со строками
  3. Запустить цикл по всем символам строки str
  4. Внутри цикла проверять, является ли текущий символ пробелом или концом строки
  5. Если это так, то сбрасывать счетчик j и начинать сбор подстрок с начала
  6. Для каждой буквы из find проверять, содержится ли она в текущей подстроке
  7. Если да, то выводить подстроку и переходить к следующему этапу
  8. Если нет, то добавлять текущий символ в подстроку и увеличивать счетчик k
  9. После окончания цикла получить символ, нажатый пользователем, и завершить программу.

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы