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