Дана строка. Определить, сколько слов заканчивается введенной пользователем буквой
Не выводит число, помогите, в чем ошибка? После проверок ничего не происходит, просто программа заканчивается(
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main()
{
char s[30];
int i,kolvo=0,n;
printf("Введите строку\n ");
gets(s);
printf("Вот она %s\n",s);
printf("Введите букву\n ");
scanf("%c",n);
for (i=0; i < strlen(s); i++)
{if ((s[i] == (' ') || (s[i] == ('.')))&&(s[i - 1]==(n))) kolvo++;}
printf("%d\n",kolvo);
return 0;
}
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
Прокомпилировал, и несколько ошибок у вас нашёл. Вы в scanf аргумент с мусором стека заводите, а функция думает, что это адрес и прога падает. Нужно передавать адрес переменной с типом char. Дальше gets устаревшая функция, поменял на fgets. Пока пашет. Читайте инструкции к функциям внимательно. Цикл поиска пробелов нужно начинать со второй буквы, а то может опять всё упасть если первая буква будет пробелом.
// gcc -Wall -std=c11 strilett.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main(){
char s[30];
int i,kolvo=0/*,n*/;
char let ;
printf(u8"Введите строку\n ");
fgets(s,sizeof(s),stdin);
printf(u8"Вот она %s\n",s);
printf(u8"Введите букву\n ");
scanf("%c",& let);
for (i=1; i < strlen(s); i++){
if ((s[i] == (' ') || (s[i] == ('.')))&&
(s[i - 1]==(let)))
kolvo++;}
printf("%d\n",kolvo);
return 0;}