Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Открытие текстового файла для чтения




Eof

Для избавления от внесенной строки eof следует в редакторе Notepad уничтожить эту строку.

 

Запись в файл символьного массива фиксированной длины и фиксированного числа строк может осуществляться следующим образом.

Пример: открытие файла4 для записи символьного масива длиной 80 литер в 3 строки.

y1=3 – первая цифра зачетки

y2=7 – вторая цифра зачетки

#include <iostream> //библиотека ввода/вывода

#include <windows.h> //установка команд операционной системы

#include <cstdio> //для функции gets()

#include <fstream> //потоки ввода/вывода в файлы;

using namespace std;

string Rus(string text) //установка вывода русского языка в строке

{

CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str());

return text;

}

int main()

{

int i,n=3; //объявляется число строк для отображения на экране

char str[80]; //объявляется длина символьного массива

fstream file4; //объявляется имя потока для записи данных в файл

file4.open("C:\\SOURCE\\qwerty.txt", ios::out);

cout<<Rus("Введите данные: ")<<endl;

for (i=0; i<n; i++)

{

gets(str); //считывание одной строки с консоли

file4<<str<<endl; //запись строки в файл

}

file4.close(); //закрытие потока

return 0;

}

При использовании этого способа нужно четко следить за количеством строк и размером символьного массива.

Созданный файл С:\\SOURCE\\qwerty.txt можно прочитать любым текстовым редактором с установкой кодировки CP866. При использовании MS Word следует: Open with/Microsoft OfficeàWord/MS-DOS, а при использовании Notepad – Open with/Notepad (Format/Font/Terminal).

 


 

Для открытия файла для чтения используются переменная fstream file; оператор <переменная_потока>.open(путь_к_файлу, режим);

Для закрытия файла используется оператор <переменная_потока>.close();

 

Пример: открытие файла1 для чтения из колонки вещественных чисел оператором while.

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

int n=-1; float a; //считывание данных на 1 больше

fstream file1; //открываем файл в режиме чтения

file1.open("C:\\SOURCE\\qwerty.dot");

while (!file1.eof())

{

n++;

file1>>a;

cout<<a<<endl;

}

file1.close();

cout<<endl; cout<<"n="<<n<<endl;

return 0;

}

Поскольку символ конец файла находится в 6-ой строке, то при использовании оператора while последнее значение переменной выводится дважды.

Пример: открытие файла1 для чтения из колонки 5 записанных вещественных чисел оператором for.

 

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

int i; float a;

fstream file1; //открываем файл в режиме чтения

file1.open("C:\\SOURCE\\qwerty.dot");

for (i=1; i<=10; i++)

{

file1>>a;

cout<<a<<endl;

}

file1.close();

cout<<endl; cout<<"i="<<i<<endl;

return 0;

}


Поскольку в операторе for число считываний равно 10, то последнее значение переменной выводится 5 раз. Получим на экране 1 2 3 4 5 5 5 5 5 5.

Пример: открытие файла3 для чтения произвольного числа строк (с уничтоженной строкой eof).

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

int n=-1; string str; //считывание данных на 1 больше

fstream file3; //открываем файл в режиме чтения

file3.open("C:\\SOURCE\\qwerty.dot");

while (!file3.eof())

{

n++;

getline(file3,str);

cout<<str<<endl;

}

file3.close();

cout<<endl; cout<<"n="<<n<<endl;

return 0;

}

При чтении файла3 имеем

Иванов – 36 лет

Петров – 17 лет

Сидоров – 50 лет

 

Пример: открытие файла4 для чтения символьного массива.

#include <iostream> //библиотека ввода/вывода

#include <iostream> //библиотека ввода/вывода

#include <windows.h> //установка команд операционной системы

#include <cstdio> //для функции gets()

#include <fstream> //потоки ввода/вывода в файлы;

using namespace std;

int main()

{

char string[80]; fstream file4;

file4.open("C:\\SOURCE\\qwerty.txt", fstream::in);

int size(0); //int size=0;

while(!file4.eof()) //определение длины текста

{

file4.get(string[size]);

cout<<string[size];

size++;

}

file4.close(); cout<<"\r";

char y1=string[3]; cout<<" y1="<<y1<<endl;

char y2=string[31]; cout<<" y2="<<y2<<endl;

return 0;

}

При открытии строчного файла предыдущего примера получим следующее заполнение массива string (рис. 9.1):

                                                       
y   =     -   п е р в а я   ц и ф р а   з а ч е т к и CR

 

                                                       
y   =     -   в т о р а я   ц и ф р а   з а ч е т к и CR

Рис. 7.1. Заполнение массива

 

Теперь, чтобы получить численное значение численной переменной y1 следует код цифры перевести в число: int y1=string[3]; y1=y1-48;

Задание 1. Выполнить лабораторную работу 7 (Операции с файлами).

Задание 2. Выполнить лабораторную работу 7a (Операции с файлами).

 




Поделиться с друзьями:


Дата добавления: 2014-11-25; Просмотров: 358; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.