1) Ввод-вывод одиночного символа
getchar() – функция (без параметров) используется для ввода одиночного символа из входного потока. Она возвращает 1 байт информации (символ) в виде значения типа int. Это сделано для распознавания ситуации, когда при чтении будет достигнут конец файла.
putchar(ch) – функция используется для вывода одиночного символа, то есть помещает в стандартный выходной поток символ ch. Аргументом функции вывода может быть одиночный символ (включая знаки, представляемые управляющими последовательностями), переменная или функция, значением которой является одиночный символ.
Например:
/*Программа считывает из входного потока один символ, а затем выводит его на экран*/
#include "stdafx.h"
#include <stdio.h>
int main(void)
{
char ch;
ch=getchar();
putchar(ch);
system("pause");
return 0;
}
Пример 2. Введите предложение, в конце которого стоит точка, и подсчитайте общее количество символов, отличных от пробела (не считая точки).
#include "stdafx.h"
#include <stdio.h>
int main(void)
{
char z; //z - вводимый символ
|
|
int k; //k - количество значащих символов
printf("Напишите предложение с точкой в конце:\n");
for (k=0; (z=getchar())!='.';)
/*выражение z=getchar() заключено в скобки, так как
операция присваивания имеет более низкий ранг,
чем операция сравнения*/
if (z!=' ')
k++;
printf("\nКоличество символов=%d",k);
system("pause");
return 0;
}
Результат выполнения программы:
Напишите предложение с точкой в конце:
1 2 3 4 5 6 7 8 9 0.
Количество символов=10
2) Ввод-вывод стандартного текстового (символьного) потока
gets(s) – функция, которая считывает строку s из стандартного потока до появления символа '\n', сам символ '\n' в строку не заносится.
puts(s) – функция, которая записывает строку в стандартный поток, добавляя в конец строки символ '\n', в случае удачного завершения возвращает значение больше или равное 0 и отрицательное значение (EOF = -1) в случае ошибки.
Например:
#include "stdafx.h"
#include <stdio.h>
int main(void)
{
char s[20];
gets(s);
puts(s);
system("pause");
return 0;
}
Результат выполнения программы: при вводе строки "123 456 789" чтение данных осуществляется побайтно до символа '\n', то есть в s занесется строка "123 456 789\0" (управляющая последовательность '\0' на экран не выводится, а является признаком конца строки). При выводе строки функция puts возвращает в конце строки дополнительно один символ '\n', следовательно, будет выведена строка "123 456 789\n" (управляющая последовательность '\n' на экран не выводится, а осуществляет перевод курсора на новую строку).
Пример 3. Вычислите длину введенной строки.
#include "stdafx.h"
#include <stdio.h>
int _main(void)
{
char st[100];
int i=0;
puts("Введите строку:");
gets(st);
while(st[i++]);
printf("Длина введенной строки = %i\n",i-1);
|
|
system("pause");
return 0;
}
Пример 4. Введите слово и замените в нем все вхождения заглавной латинской 'A' на малую латинскую 'a'. Выведите слово после редактирования.
#include "stdafx.h"
#include <stdio.h>
int main(void)
{
char st[80];
int i;
printf("\nВведите слово: ";)
scanf("%s",st);
for(i=0;st[i]!='\0';i++)
if (st[i]=='A') st[i]='a';
printf("\nСлово после редактирования: %s", st);
system("pause");
return 0;
}
3) Форматированный ввод-вывод символьных данных и строк
printf() – функция, осуществляющая форматированный вывод данных.
scanf() – функция, осуществляющая форматированный ввод данных.
%c – спецификатор формата ввода-вывода одиночного символа.
%s – спецификатор формата ввода-вывода строки символов.
Например:
#include "stdafx.h"
#include <stdio.h>
int _main(void)
{
char s[20];
scanf("%s",s);
//для строк не используется обращение по адресу &
printf("%s",s);
system("pause");
return 0;
}
Результат выполнения программы: при вводе строки "123 456 789", чтение данных осуществляется побайтно до первого пробела, то есть в строку s занесется только первое слово строки "123\0", следовательно, выведется: "123". Так как s – имя символьного массива, то есть адрес его начального элемента, операция & в функции scanf для строк не используется.
Пример 5. Записать введенную строку символов в обратном порядке.
#include "stdafx.h"
#include <stdio.h>
int main(void)
{
char st[80];
char temp;
int i,len=0;
printf("\nВведите строку > ");
scanf("%s",st);
while (st[len++]); //вычисление длины строки
len-=2;//поправка на символ конца строки и нумерацию с нуля
for(i=0;i<len;i++,len--){
temp=st[i]; //обмен символов
st[i]=st[len];
st[len]=temp;
}
printf("\nПолученная строка > %s",st);
system("pause");
return 0;
}