Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 308; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.6.140 (0.01 с.) |