Найти и напечатать все слова, которые оканчиваются на заданную букву - C (СИ)
Формулировка задачи:
Подскажите, что упустил. Не могу понять, поч не работает. Дана символьная строка, в которой слова перечислены через точку с запятой, а общая длина меньше или равна 80-ти. Найти и напечатать все слова, которые оканчиваются на заданную букв
#include<stdio.h>
#include<conio.h>
#include<string.h>
int lastsym(char*Temp, char c)
{
int l;
l=strlen(Temp);
if(Temp[l-1]==c)
return1;
return 0;
}
main()
{
char c,*Temp, s[80];
char Znak[]=";";
clrscr();
printf("stroka");
gets(s);
printf("\nvvedite simbol");
scanf("%c",&c);
Temp=strtok(s,Znak);
if(lastsym(Temp,c)
do{
printf("\n slovo - %S",Temp);
Temp=strtok(NULL,Znak);
}while(Temp!=NULL);
getch();
}Решение задачи: «Найти и напечатать все слова, которые оканчиваются на заданную букву»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[80];
char* t;
char bukva[1];
printf("\nVvedite bukvu:\n");
gets(bukva);
printf("\n");
printf("\nVvedite stroku:\n");
gets(str);
t=strtok(str,";");
printf("\n");
while (t != NULL) {
if(t[strlen(t)-1] == *bukva) {
printf("\nSlovo: %s",t);
}
t = strtok (NULL, ";");
}
printf("\n");
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены три переменные: str, t, bukva.
- Переменная str является массивом символов, в который будет помещена строка.
- Переменная t является указателем на первый символ подстроки, найденной в строке str.
- Переменная bukva является массивом символов, в который будет помещена последняя введенная пользователем буква.
- Выводится приглашение для ввода буквы.
- Вводится буква.
- Выводится приглашение для ввода строки.
- Вводится строка.
- Строка разбивается на подстроки, разделенные точкой с запятой.
- В цикле выводятся все подстроки, которые заканчиваются на введенную букву.
- В конце программы выводится символ новой строки.
- Программа завершается успешно.