Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функции для ввода-вывода по строкамСодержание книги
Поиск на нашем сайте Чтение строки из потока
Чтение по строкам осуществляет функция fgets() Прототип: char * fgets(char *_s, int _size, FILE *_fp);
Описание: fgets() считывает из потока _fp строку символов и помещает ее в _s. Ввод завершается после считывания _size-1 символов или при вводе символа перехода на следующую строку, смотря, что произойдет раньше. fgets() прекращает ввод строки при получении символа перехода на следующую строку. Нулевой байт добавляется в конец строки для индикации ее конца. Символ конца строки не отбрасывается и располагается непосредственно перед нуль-символом.
Возвращаемое значение: При успешном завершении возвращает указатель на _s, при ошибке или конце файла возвращает указатель NULL.
Для ввода строки со стандартного вводного потока (с клавиатуры) используется функция gets().
Прототип: char * gets(char *_s);
Описание: Функция gets() читает строку символов, оканчивающуюся символом перевода строки, в переменную *_s из стандартного входного потока stdin. Данная символьная строка оканчивается символом перехода на новую строку, который при записи в *_s заменяется на нулевое окончание (\0). В отличие от scanf(), gets() позволяет вводить строки, содержащие символы пробела и табуляции. Все, что было введено до перевода каретки, помещается в _s.
Возвращаемое значение: При успешном завершении, функция gets() возвращает строку _s; при достижении конца файла (EOF) или ошибке возвращается NULL.
Пример: #include <stdio.h>
int main(void) { char string[133]; printf("Введите строку:"); gets(string); printf("Cтрока = '%s'\n,string); }
Запись строки в поток
Запись в поток по строкам осуществляет функция fputs() Прототип: int fputs(char *_s, FILE *_fp);
Описание: Функция fputs() копирует строку _s, ограниченную нулевым байтом, в поток _fp. Она добавляет в конец строки символ перехода на новую строку. Нулевой символ в файл не переносится.
Возвращаемое значение: При успешном завершении fputs() возвращает последний выведенный символ. В противном случае возвращает EOF. Пример: #include<stdio.h>
int main(void) { /* вывести строку в поток */ fputs("Тестовый пример",stdout); return 0; }
Для вывода строки в стандартный выводной поток (на экран) используется функция puts(). Прототип: int puts(char *_s);
Описание: Функция puts() копирует строку символов с нулевым окончанием в стандартный выходной поток stdout, причем добавляет в конец символ перехода на новую строку.
Возвращаемое значение: При успешном завершении, функция puts() возвращает ненулевое значение. В противном случае возвращается EOF. Пример: #include<stdio.h>
int main(void) { /* вывести строку в поток */ puts("Тестовый пример"); return 0; }
Задача 164. Программа создает программным путем (по строкам) текстовый файл на диске. Ввод строк с клавиатуры осуществляет функция fgets(), вывод на диск построчно – функция fputs().
// fget_fput3_rus.cpp: 14.05.2012г // Ввод строк с клавиатуры(fgets) и создание текстового файла(fputs) // Использование fgets и fputs для обычного в/ы (stdin / stdout)
#include<conio.h> #include<stdio.h> #include <stdlib.h> #include <iostream> using namespace std;
const int size=120;
int main() { char line[size]; char nameout[15]; FILE *out;
system("chcp 1251"); //переключаем консоль в кодировку win1251 // ОБЯЗАТЕЛЬНО ПЕРЕКЛЮЧИТЬ ШРИФТЫ С ТОЧЕЧНЫХ НА Lucida console // после запуска программы щелчком мыши в левом верхнем углу
cout<< "Введите имя создаваемого файла,например,D:\omar.txt\n"; gets(nameout);
if((out=fopen(nameout, "a+"))==NULL) { cout<< " Не могу открыть выводной файл... "; getch(); exit(1); } cout<< "Введите несколько строк текста, потом Ctrl+Z \n";
while(fgets(line,size,stdin)!=NULL && line[0]!='\n') { fputs(line,out); fputs(line, stdout); // puts(line); } cout<< "Файл создан"; fclose(out); getch(); return 0; }
Задача 165. В программе решается следующая задача. На основе файла, созданного предыдущей программой (см.Задачу 164), строится новый файл, в котором каждая строка: 1 вариант) содержит только буквы исходной строки 2 вариант) перевернута по отношению к исходной #include "stdafx.h" #include<conio.h> #include<stdio.h> #include <iostream> using namespace std; // к записи fputs добавляет два символа-\r и \n // Чтение текстового файла порциями до 255 символов // Когда fgets встречает символ \n, она его сохранит в строке, // и вставит после него \0 // или прочтёт size-1 символов или достигнет EOF - она // добавит '\0'-символ, чтобы сформировать строку
const int SIZE=256;
void main() { FILE *out, *in; char ch, zap1[SIZE],zap2[SIZE]; int i,k; //char namein[15],nameout[15]; system("chcp 1251");
//printf("Введите имя входного файла,например,D:\\eddy.doc\n"); //gets(namein); in=fopen("D:\\eddy.doc","r"); if(in==NULL) {puts("Входной файл не открыт"); exit(1);} //printf("Введите имя выходного файла,например, dima.txt\n"); // gets(nameout);
out=fopen("D:\\dima.TXT","w"); if(out==NULL) {puts("Выходной файл не открыт"); exit(2);}
// 1 вариант) содержит только буквы исходной строки /* while(fgets(zap1,SIZE,in)!=NULL) { i=0; k=0; while (ch=zap1[i]) { if (ch>='А' && ch<='Я'|| ch>='а' && ch<='п'|| ch>='р' && ch<='я'|| ch>='a' && ch<='z'|| ch>='A' && ch<='Z'|| ch== ' '|| ch=='\n') // обыграть. Сперва без '\n' zap2[k++]=ch; i++; } zap2[k]=0; fputs (zap2, out); } */ //2 вариант) переслать строки из файла в файл с переворотом
while(fgets(zap1,SIZE,in)!=NULL) { i=0; while (zap1[i]) i++; k=0; while (--i >=0) { zap2[k++]=zap1[i];}
zap2[k]=0; fputs (zap2, out); } puts("Файл скопирован"); fclose(out); fclose(in);
}
|
||
|
Последнее изменение этой страницы: 2016-12-16; просмотров: 460; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.01 с.) |