Ввод-вывод символьных данных. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ввод-вывод символьных данных.



Для ввода и вывода символьных значений с помощью библиотечных функций printf() и scanf() используется спецификация преобразования %с. В качестве параметра функции scanf() должны передаваться адреса переменных, а не их имена.

 

Пример 4: ввести предложение, слова которого разделены пробелами, предложение заканчивается точкой. Удалить из предложения повторяющиеся пробелы.

 

#include <stdio.h>

#include <conio.h>

void main()

{ char z,s; // z-текущий вводимый символ

          // s-предыдущий символ

clrscr();

printf ("Введите предложение с точкой в конце: \n ");

for(z=s=' '; z!='.'; s=z)

{ scanf("%c",&z);

if (z==' '&& s==' ') continue;

printf("%c",z);

}

getch();

}

Для ввода и вывода символьных строк с помощью библиотечных функций printf() и scanf() используется спецификация преобразования % s. Строка символов, вводимая с помощью функции scanf(), не должна содержать пробелов (функция вводит строку до первого пробела). Для ввода строки символов, содержащей пробелы, используется функция gets () (вводится вся строка, в том числе и соответствующий клавише <Enter> символ ‘\n’).

 

Пример 5: Написать программу, которая во введённой с клавиатуры строке, преобразует строчные буквы латинского и русского алфавита в прописные буквы.

#include <stdio.h>

#include <conio.h>

void main()

{

 unsigned char st[80]; // строка символов

 int i;

 printf(“\n Введите строку текста и нажмите <Enter>”);

 gets(st);

 i=0;

 while(st[i])

{if ((st[i]>=’a’ && st[i]<=’z’)||

  (st[i]>=’а’ && st[i]<=’п’))

   st[i]-=32;

else if (st[i]>=’р’ && st[i]<=’я’)

   st[i]-=80;

 i++;

}

 printf(“\n %s\”,st);

 printf(“\n Для завершения нажмите <Enter> ”);

 getch();

}

 

Для ввода и вывода символов в библиотеке предусмотрены специальные функции обмена:

getchar () - функция без параметров. Позволяет читать из входного потока (обычно с клавиатуры) по одному символу за обращение, чтение вводимых данных начинается после нажатия клавиши <Enter>. Функция не выводит на экран символ, соответствующий нажатой клавиши.

putchar (Х) - выводит символьное Х в стандартный выходной поток (обычно на экран дисплея)

 

Пример 6: ввести предложение с точкой в конце, подсчитать общее количество символов, отличных от пробела (не считая точки). 

#include <stdio.h>

#include <conio.h>

void main()

{ char z,s;

int k;

clrscr();

printf ("Введите предложение с точкой:: \n ");

for(k=0; (z=getchar())!='.';)

if (z!=' ') k++;

printf("\n Количество символов=%d",k);

getch();

 }

 

Пример 7: написать программу, которая выводит на экран сообщение в «телеграфном» стиле: буквы сообщения должны появляться по одной с некоторой задержкой.

#include <stdio.h> // посимвольный вывод сообщения

#include <conio.h>

#include "dos.h" //для доступа к функции delay

void main()

{

 char msg[]="\n\r Приветствую Вас!\0";

 int i;         // номер символа

 clrscr();

 i=0;

 while (msg[i]) // while (msg[i]!='\0') эти записи эквивалентны

{

putch(msg[i++]);

delay(150);

}

 printf(" \n Введите ENT");

 getch();

}

Если строки формируются из отдельных символов (используется функция getchar()),необходимо соглашение о признаке окончания строки, например - наличие точки в конце предложения, ограничение длины строки 80 символами. Для учёта ситуаций с пробелами необходимо при анализе очередного введённого символа рассматривать и предыдущий символ.

 

Пример 8: написать программу, которая выводит на экран последнее слово предложения с точкой.

#include <conio.h>

#include <stdio.h>  

void main()

{

 char s,ss;        // s – вводимый символ

              // ss-предыдущий введённый символ

 char A[80];       // массив для слова

 int i,k;          // k-длина слова

 clrscr();

 printf(" введите предложение с точкой: \n");

 for (i=0, s=' ',k=0; i<=79; i++)

{ ss=s; s=getchar();

if (s==' ') continue;

if (s=='.') break;

if (ss==' ') k=0;

A[k]=s; k++;

}

// выход по точке или по окончанию ввода строки

 if (i==80 || k==0)

printf(" Неверное предложение \n");

 else

{ A[k]='\0';      // признак конца строки

printf(" Последнее слово: %s",A);

}

getch();

 }

Пример 9: написать программу, которая выводит на экран код, введённого пользователем символа. Программа должна завершать работу в результате ввода точки.

#include <stdio.h>

#include <conio.h>

void main()

{

 unsigned char ch; // char -128 - +128

 clrscr();

 puts("Вводите символы, признак завершения ввода '.' ");

 printf("-> ");

 do

 { ch=getch();

printf("\n Символ: %c Код: %d",ch,ch);

 }while(ch!='.');

 printf("\n ENT");

 getchar();

}

Пример 10: написать программу, которая вычисляет длину введённой с клавиатуры строки.

#include <stdio.h>

#include <conio.h>

#define pr5" "

void main()

{

 char st[80];

 int i;

 clrscr();

 i=0;

 puts("Введите строку ");

 printf("-> ");

 gets(st);

 printf("\n");

 while (st[i++]); // while (st[i]!='\0') эти записи эквивалентны

 printf(" \n длина строки %d \n ",i);

 printf(" ENT");

 getchar();

}

Пример 11: написать программу, которая во введённой строке определяет (печатает) порядковый номер (позицию) каждого символа, отличного от пробела или цифры.

// проверка вводимых числовых данных

#include <stdio.h>

#include <conio.h>

void main()

{ char z[]="0123456789 ";

char s;

int i,j;

printf (" Введите строку символов: \n ");

for(i=1; (s=getchar())!='\n'; i++)

{ for (j=0; j<11; j++)

if (s==z[j]) break;

if (j==11)

printf(" Ошибка в символе %c с номером %d \n",s,i);

}

getch();

}

 

Функции работы со строками.

Для работы со строками существует специальная библиотека, описание которой находится в файле <string.h>

Наиболее часто используются функции strcpy(), strcat(), strlen(), strcmp().

 



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 167; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.114.125 (0.015 с.)