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

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;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: