Исключение из строки всех символов, кроме букв английского алфавита и пробела - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, необходимо написать фрагмент программы, в котором проверяется, есть ли в строке, которая должна состоять только из английских букв и пробелов, символы отличные от допустимых (цифры, знаки.....). Я недавно начал изучать язык СИ. Написал фрагмент программы:
#include <stdio.h>
#include <locale.h>
void main()
{
    char s[258];
    int i;
    setlocale(LC_ALL, "Russian");
    printf("Введите последовательность, не превышающую 256 символов. Последовательность представляет из себя набор слов, состоящих из английских букв. Слова можно разделять на предложения. Каждое предложение заканчивается точкой. Последовательность заканчивается *.");
    gets(s);
    i=0;
    while ((s[i]!='*')&&(i<=256))
    {
        if (((s[i]>'a')&&(s[i]<'z'))||((s[i]>'A')&&(s[i]<'Z'))||(s[i]=' ')) 
            printf("Все окей");
        else
        {
                printf("Не окей");
                break;
        }
        i++;
    }
    printf("%s", s);
}
При вводе цифры в последовательность не происходит должная реакция. Программа и дальше пишет "все окей". Я мало что знаю по СИ, но очень хочу разобраться. Подскажите, пожалуйста.
Да еще можно точки вводить. Забыл про них.

Решение задачи: «Исключение из строки всех символов, кроме букв английского алфавита и пробела»

textual
Листинг программы
#include <stdio.h>
 
void main()
{
    char s[258];
    int i,j=0;
    printf("Enter string (end-*).");
    gets(s);
    i=0;
   while ((s[i]!='*')&&(i<=256))
   {
        if  ( ! ( ((s[i]>'a') && (s[i]<'z')) || ( (s[i]>'A') && (s[i]<'Z')) || (s[i]==' ') || (s[i] == '.')))
        {
            printf("Bad symbol %c \n",s[i]);
            j=-1;
            break;
        }
        i++;
    }
   if (j == 0) printf("All is OK!\n");
}

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки для работы с консолью
  2. Объявление переменных: строки s, счетчика i, инициализация j=0
  3. Вывод сообщения с просьбой ввести строку
  4. Считывание строки с помощью функции gets(s)
  5. Установка значения i=0 и начало цикла while
  6. Проверка условия: s[i]!='*' и i<=256
  7. Внутри цикла проверка каждого символа строки
  8. Если символ не является буквой английского алфавита (заглавной или строчной), пробелом или точкой - выводится сообщение с названием плохого символа
  9. Значение j=-1 и выход из цикла с помощью оператора break
  10. После окончания цикла проверка значения j
  11. Если j=0, выводится сообщение All is OK!
  12. Ожидание ввода пользователя для завершения программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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