Ввод-вывод символьных данных и строк

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; просмотров: 1342;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.012 сек.