Вывести те слова которые есть одним ис слов 'a', 'ab', 'abc' - C (СИ)
Формулировка задачи:
Дано массив слов , в каждному слове от 1 до 8 малых латинских букв.вывести те слова которые есть одним ис слов 'a','ab','abc'.
Вот код.Пишет что strstr перегруженная
#include "stdafx.h" #include "string.h" void main() {char s[255]="dsa absdr "; char s2[255]; memset(s2,0,255); for(char *c=strtok(s," ");c;c=strtok(0," ")){ if(strlen(c)>strlen(s2)){ strcpy(s2,c); printf ("vuvod stroki=%s\n",s2); } } {if (strstr(s2,'a') || strstr(s2,'ab') || strstr(s2,'abc')) printf ("vuvod stroki=%s\n",s2); } }
Решение задачи: «Вывести те слова которые есть одним ис слов 'a', 'ab', 'abc'»
textual
Листинг программы
#include <stdlib.h> #include<stdio.h> #include<conio.h> #include <string.h> void main() { char s[255]="dsa absdr "; char s2[255]; memset(s2,0,255); for(char *c=strtok(s," ");c;c=strtok(0," ")) { if(strlen(c)>strlen(s2)) { strcpy(s2,c); printf ("\nword %s",s2); if (strstr(s2,"a")) printf (" contain a",s2); if (strstr(s2,"ab")) printf (" contain ab",s2); if (strstr(s2,"abc")) printf (" contain abc",s2); } } getch(); }
Объяснение кода листинга программы
Вывод программы представляет собой список слов, содержащих в себе букву 'a', 'ab' или 'abc'.
- Входные данные: строка
dsa absdr
- Выполняется цикл по каждому слову в строке, используя функцию strtok для разделения строки на слова.
- Если длина текущего слова больше длины строки, в которую будет копироваться слово, то выполняется:
a. Копирование текущего слова в строку s2.
b. Вывод текущего слова на экран.
c. Проверка наличия буквы 'a' в слове s2 с помощью функции strstr. Если буква 'a' найдена, то выводится сообщение
contain a
. d. Проверка наличия букв 'ab' в слове s2 с помощью функции strstr. Если буквы 'ab' найдены, то выводится сообщениеcontain ab
. e. Проверка наличия букв 'abc' в слове s2 с помощью функции strstr. Если буквы 'abc' найдены, то выводится сообщениеcontain abc
. - После выполнения цикла программа завершается.