Внутренние коды символов
Форматированный ввод-вывод символьных данных и строк
Стандартные потоки ввода-вывода символьных данных и строк
cin – оператор, который определяет стандартные потоки ввода данных.
cout – оператор, который определяет стандартные потоки вывода данных.
<< – операция записи данных в поток;
>> – операция чтения данных из потока.
Пример 69.
int main()
{
char s[20];
cout<<"Input text";
cin>>s; //ввод строки из стандартного потока
cout<<s; //вывод строки в стандартный поток
system("pause");
return 0;
}
Результат выполнения программы: при вводе строки "123 456 789" чтение данных осуществляется побайтно до первого пробела, то есть в s занесется только первое слово строки "123\0", следовательно, выведется: "123".
Пример 70. Введите слово и замените в нем все вхождения заглавной латинской 'A' на малую латинскую 'a'. Выведите слово после редактирования.
int main()
{
char st[80];
int i;
cout << "\nВведите слово: ";
cin >> st;
for(i=0;st[i]!='\0';i++)
if (st[i]=='A') st[i]='a';
cout << "\nСлово после редактирования: "<< st;
system("pause");
return 0;
}
printf() – функция, осуществляющая форматированный вывод данных.
scanf() – функция, осуществляющая форматированный ввод данных.
%c – спецификатор формата ввода-вывода одиночного символа.
%s – спецификатор формата ввода-вывода строки символов.
Пример 70.
int main()
{
char s[20];
cout<<"Input text";
scanf("%s",s);
//для строк не используется обращение по адресу &
printf("%s",s);
system("pause");
return 0;
}
Результат выполнения программы: при вводе строки "123 456 789", чтение данных осуществляется побайтно до первого пробела, то есть в строку s занесется только первое слово строки "123\0", следовательно, выведется: "123". Так как s – имя символьного массива, то есть адрес его начального элемента, операция & в функции scanf для строк не используется.
Пример 71. Записать введенную строку символов в обратном порядке.
int main()
{
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;
}
5) Прочитать несколько строк текста можно так:
char str[100];
cin.getline(str, 100 , '*' );
Второй параметр этой функции (100) задаёт максимальную длину строки, третий (‘*’) – по какому символу прекратить ввод.
Пример 72. Печать десятичных цифр и их кодов
int main()
{
char z;
for (z='0'; z<='9'; z++) {
if (z=='0' || z=='5')
printf ("\n");
printf("%c - %i ", z, z);
}
system("pause");
return 0;
}
Результат выполнения программы:
Пример 73. Вывести на экран вторую часть таблицы кодировки символов (символы с кодами от 128 до 255). Таблица должна состоять из восьми колонок и шестнадцати строк.
#include "stdafx.h"
#include <iostream>
using namespace std;
#define SM 128
int main()
{
unsigned char ch; /*если ch объявить как char, то буквам русского алфавита
будут соответствовать отрицательные коды*/
int i, j;
printf("Таблица ASCII кодировки символов\n");
for (i=0; i<16; i++) // шестнадцать строк
{
ch=i+SM;
for (j=1; j<=8; j++) // восемь колонок
{
printf ("%4c -%4i",ch,ch);
ch+=16;
}
printf ("\n");
}
system("pause");
return 0;
}
Результат выполнения программы: