Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функции для ввода-вывода по символамСодержание книги
Поиск на нашем сайте
Чтение символов из потока Чтение символов осуществляют функции getc() и fgetc() Прототипы: int getc(FILE *_fp); int fgetc(FILE *_fp); Описание: Обе функции (getc() представляет собой макрокоманду), получают следующий по порядку символ из входного потока _fp и увеличивают указатель текущего положения в потоке на 1.
Возвращаемое значение: При успешном завершении функции getc() и fgetc() возвращают считанный символ после предварительного преобразования его в целое без расширения знака. При возникновении ситуации EOF или при ошибке они возвращают EOF.
Пример 1: #include<stdio.h>
int main(void) { char ch; printf("Введите символ:"); /* ввести символ из стандартного входного потока stdin */ ch = getc(stdin); printf("Был введен символ '%c'\n",ch); return 0; } Пример 2:
#include <conio.h> #include <iostream> using namespace std;
// Обработка текстового файла, созданного // обычным текстовым редактором
int main() { char namein[15]; char ch; FILE *fp;
system("chcp 1251"); printf("Введите путь и имя вводного файла,например,test1\n"); gets(namein); if((fp=fopen(namein, "r"))==NULL) { perror(" Не могу открыть вводной файл... "); // perror(namein); getch();exit(1); } do { /* ввести символ из файла */ ch = fgetc(fp); /* вывести символ на экран */ printf("%c", ch); } while(ch!=EOF); getch();fclose(fp); return 0; }
Для ввода символов со стандартного вводного потока (с клавиатуры) используется функция getchar(). Прототип: int getchar(void);
Описание: getchar() - это макрокоманда, вводящая символ из потока stdin. Она определена следующим образом: getc(stdin).
Возвращаемое значение: При успешном завершении функция getchar() возвращает считанный символ после предварительного преобразования его в целое без расширения знака. При возникновении ситуации EOF или при ошибке она возвращает EOF.
Пример: #include<stdio.h>
int main(void) { char c; /* Замечание. getchar читает символы с stdin, который имеет буфер на одну строку. Поэтому она ничего не возвращает до тех пор, пока вы не нажмете Enter */ while((c=getchar())!='\n') printf("%c",c); return 0; }
Запись символов в поток Запись символов осуществляют функции putc() и fputc(). Прототипы: int putc(int _c, FILE *_fp); int fputc(int _c, FILE *_fp);
Описание: Обе функции (функция putc() представляет собой макрокоманду) выводят символ _c в указанный выходной поток _fp.
Возвращаемое значение: При успешном завершении функции putc() и fputc() возвращают символ _c. При возникновении ошибки обе функции возвращают значение EOF.
Пример: #include <stdio.h> int main(void) { char msg[] = "Здравствуй мир"; int i=0; while(msg[i]) { fputc(msg[i],stdout); i++; } return 0; }
Для вывода символов в стандартный выводной поток (дисплей) используется функция putchar().
Прототип: int putchar(int _c);
Описание: putchar() – это макрокоманда, определенная как putc(_c, stdout);
Возвращаемое значение: При успешном завершении putchar() возвращает выведенный символ _c. При ошибке она возвращает EOF.
Пример: #include<stdio.h> int main(void) { char msg[] = "Тестовый пример"; int i=0; while(msg[i]) { putchar(msg[i]); i++; } return 0; }
Задача 163. Программа создает программным путем текстовый файл (посимвольно) на диске, затем переносит из этого файла в другой файл каждый третий (0, 3, 6, …) символ исходного файла. Попутно результат обработки выводится на экран.
#include <conio.h> #include <stdio.h> #include <iostream> using namespace std;
int main() { // программа печатает каждый 3-й символ текстового файла, созданного // программным путем с возможным добавлением текста (режим а+)
system("chcp 1251"); //переключаем консоль в кодировку win1251
char nameout[15]; FILE *out, *in; char ch;
//для русских int ch не обязательно для норм работы EOF! cout<< "Введите имя cоздаваемого файла,например,D:\\eddy.txt\n"; gets(nameout);
if((out = fopen(nameout, "a+"))==NULL) //для чтения и записи { cout<< "Не могу создать файл...!"; //perror(nameout); getch(); exit(1); }
cout<< "Введите последовательность символов, в конце – Ctrl+Z\n"; while ((ch=getchar())!=EOF) fputc (ch, out); cout<< "\nфайл создан"; //getch(); // в случае a+ файл можно не закрывать, а сделать так:
rewind(out); //возврат к началу файла in=out; //просто переустановим указатель
cout<< "\nВведите имя преобразованного файла "; gets(nameout); out=fopen(nameout, "w"); if(out==NULL) { cout<< "\n Не могу открыть выводной файл... "; exit(2); }
// Обработка созданного файла, содержащего фразы: // Даже Эдди нас опередил с детским хором // So even Eddy came oven ready int k=0; //while((ch=getc(in))!=EOF) while(!feof(in)) { ch=fgetc(in);
if(ch=='\n') { putc('\n',out);putchar('\n');} if(k++%3==0) { putc(ch, out);putchar(ch);} } fclose(in); fclose(out); cout<< "конец работы"; getch(); return 0; }
Для проверки программы мы ввели следующий текст:
Даже Эдди нас опередил с детским хором So even Eddy came oven ready
И вот результат:
Дед спел тихо Send money
|
||
|
Последнее изменение этой страницы: 2016-12-16; просмотров: 382; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.102 (0.009 с.) |