Процедурное программирование на языке С. Часть 2. Указатели на объекты. Многоуровневая адресация: Методические указания к лабораторным работам по курсам «Алгоритмические языки и программирование» и «Процедурное программирование», страница 18

Используя один вызов функции scanf(), можно ввести с клавиатуры как один символ, так и целую строку, но в которой отсутствуют пробелы. Для этого используются соответственно спецификации преобразования: %c, %s. Функция gets() позволяет ввести с клавиатуры строку,  в которой встречаются пробелы.

В отличие от функций scanf() и gets(), функции getchar(), getche(), getch() не имеют параметров и считывают из входного потока по одному символу за обращение, возвращая его код:  тип функций – int. Функция getc() идентична функции getchar(),  если при вызове ее аргумент – stdin. Для считывания нескольких символов, вводимых с клавиатуры, все функции следует использовать в цикле.

В примере 6.1 представлена программа, обрабатывающая введенное с клавиатуры предложение с точкой в конце. На экран выводится исходное предложение без лишних пробелов между словами и общее количество  слов.

Пример 6.1.

#include <stdio.h>

void main (void)

 {   int a=1,i=0,flag=0;    char str[256];

 do   {   str[i]=getche();

                  if (str[i] == ' ')

                    {     if (flag == 0)

                           {       flag++;

                                   if  (i !=0)

                                       {         a++; //закончилосьслово

                                                   i++;

                                        }

                            }

                      }      else    {      if (flag == 1)          flag--;           i++;     }

            }      while (str[i-1] !='.');

   if (str[i-2] == ' ')     {     str[i-2]='.';     i--;     }

     str[i]='\0';       printf("Встроке  \'%s\' %d слов(а)\n",str,a);

}

Функции вывода символов и строк  в поток stdout: printf(), putchar(), putc(), puts().

Используя функцию printf(), можно вывести на экран как один символ, так и целую строку. Для этого, как и для функции scanf(), используются соответственно спецификации преобразования: %c, %s.

Функция putchar()  имеет один параметр, соответствующий символу, выводимому на экран дисплея.  Функция putc() идентична функции putchar(),  если она вызвана с двумя  аргументами, причем второй аргумент  – stdout. Для вывода на экран нескольких символов  эти функции следует использовать в цикле.

Для вывода на экран символьных строк, кроме функции printf(), существует  функция puts()  с заголовком  intputs( constchar * str). Эта функция записывает строку, расположенную по адресу str, в стандартное выходное устройство (через поток stdout), при этом символ конца строки преобразуется в разделитель строк.

6.2. ОБРАБОТКА СИМВОЛЬНЫХ ПЕРЕМЕННЫХ И СТРОК

Значение любой символьной переменной представлено в оперативной памяти целым числом – кодом символа, поэтому работать с символьными переменными можно так же, как с числами, в тех случаях, когда в этом есть смысл. В примере 6.2 на  экран выводятся изображения и внутренние коды символов из диапазона, определяемого двумя символами, введенными с клавиатуры.

Пример 6.2.

#include <stdio.h>

void main (void)

  {  char a, b, c;

  printf("\n Введитесимвол - нижнююграницу");   scanf("%c",&a);

fflush(stdin);

printf("\n Введите символ - верхнюю границу");  scanf("%c",&b);

fflush(stdin);

for ( c=a; c < b; c++ )

printf("\nCимвол - %c, код символа - %d",c,c);

  }

В примере 6.3 в условном операторе определяется, является ли введенный с клавиатуры символ цифрой. 

Пример 6.3.

#include <stdio.h>

void main (void)

  {  char c;

  printf("\n Введитесимвол "); scanf("%c",&c); fflush(stdin);

  if (c >= '0' && c <= '9') printf("\n Найденацифра %c",c);

else printf("\n Исходный символ - не  цифра ");

}

Замечание. Определить, является ли значение символьной переменной одной из десятичных цифр, можно с использованием функции isdigit()  (из библиотеки <ctype.h>). В случае отрицательного результата (результат проверки – «ложно»), функция возвращает ‘0’. Если аргумент функции – цифра, возвращаемое функцией значение – ненулевая величина. Аналогично работают и другие функции (единственным аргументом которых является проверяемый символ) этой библиотеки: