Используя один вызов функции 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.
#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’. Если аргумент функции – цифра, возвращаемое функцией значение – ненулевая величина. Аналогично работают и другие функции (единственным аргументом которых является проверяемый символ) этой библиотеки:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.