Функции для ввода-вывода по символам 


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



ЗНАЕТЕ ЛИ ВЫ?

Функции для ввода-вывода по символам



 

Чтение символов из потока

Чтение символов осуществляют функции 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; просмотров: 276; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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