Файлове - C програмиране

Тази листовка обхваща основите на четене на данни от файлове и извеждане на данни във файл.

Всъщност файловите I/O не се различават от конзолните I/O. С единственото изключение - ако данните се четат от файл, по всяко време можете да се върнете в началото на файла и да го прочетете отново.

За да работите с файлове в C ++, трябва да включите заглавния файл fstream:

След това можете да декларирате обекти, свързани с файлове: за четене на данни от файл се използват обекти от тип ifstream (съкращение input еile поток, за записване на данни във файл, обекти от типа на потока (output еile поток). например

За да обвържете този или онзи поток с файл (отворете файл за четене или за писане), използвайте метода open, на който трябва да бъде предаден параметър - текстов низ, съдържащ името на файла за отваряне.

След като отворите файловете и ги свържете с файловите потоци, можете да работите с файловете по същия начин, както със стандартните потоци за вход/изход cin и cout. Например, за да изведете стойността на променливата x към изходящия поток, използвайте следната операция

И да прочетете стойността на променлива от потока в

За да затворите предварително отворен файл, използвайте метода close () без аргументи:

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

При четене на данни от файл може да възникне ситуация, когато се стигне до края на файла (край на файла, съкратено EOF). След достигане на края на файла не е възможно четене от файла. За да проверите състоянието на файла, трябва да извикате метода eof (). Този метод връща true, ако е достигнат краят на файла, или false, ако не е достигнат. В допълнение, състоянието на файловия поток може да бъде проверено чрез просто използване на идентификатора на потока като булево условие:

Можете също да използвате резултата, върнат от операцията за четене, като условие. Ако четенето е било успешно, тогава резултатът се счита за вярно, а ако е неуспешно, за невярно. Например можете да организирате четене на последователност от цели числа по следния начин:

И организирайте четенето на файла ред по ред (ако приемем, че редът завършва с нов ред), както следва:

Също така е полезно да повторите листа "Струни".

Упражнения

Входният файл съдържа две цели числа. Запишете сумата им в изходния файл. (Б) Премахнете излишните интервали

Файлът съдържа текст, състоящ се от редове. Премахнете всички допълнителни интервали от всеки ред: водещи интервали в началото на всеки ред, последващи интервали в края на ред, заменете всички интервали между думите с един. Изведете резултата във файл.

output.txt (° С) Подравняване вляво

Първият ред на входния файл съдържа цяло число N. Следващия (започвайки от следващия ред) е текстът. Необходимо е този текст да се раздели на редове, чиято дължина не надвишава N, и да се изведе във файл. Всеки изведен ред не трябва да съдържа интервали в началото на реда, интервали в края на реда, думите в реда трябва да бъдат разделени с едно интервал. Освен това, всеки ред трябва да бъде възможно най-дълъг, тоест редовете се формират според принципа на „лакомия“: добавяме думи от входния файл, докато дължината на получения ред не надвишава N, след това поставяме ред почивка. Гарантирано е, че във входния файл няма думи, по-дълги от N знака.

output.txt (Д) Подравнете вдясно

Решете предишния проблем, при условие че текстът трябва да бъде подравнен вдясно, т.е. всеки ред в изхода трябва да е с дължина точно N знака, в противен случай той трябва да бъде подплатен в началото на реда с интервали до дължина N. Последният знакът на всеки ред трябва да е празен.

output.txt (E) Оправдайте по ширина

Решете предишния проблем, при условие че текстът в изхода на програмата трябва да бъде оправдан: първият и последният знак на реда трябва да са небели, ако е необходимо, между думите трябва да се добавят допълнителни интервали, докато броят на интервалите между всякакви две думи в един ред не трябва да се различават повече от 1.

Последният ред в изхода трябва да бъде подравнен вляво.

output.txt (F) Таблица на честотата - 1

Входният файл съдържа малко текст. За всяка буква от латинската азбука пребройте колко пъти се среща в текста. Бройте главни и малки букви заедно, игнорирайте други знаци. Програмата трябва да показва всички букви от латинската азбука (главни букви, от А до Я, по една буква на ред), след това на същия ред, колко пъти тази буква се появява в изходния текст.

output.txt (G) Таблица на честотата - 2

Решете предишния проблем, като отпечатате резултата в низходящ ред на честотата на поява на буквата във входния файл. Ако някаква буква не се появи във входния файл, не е необходимо да се отпечатва.

output.txt (H) Обръщане на дълга последователност

Програмата получава като вход последователност от цели числа с неизвестна дължина. Необходимо е да се изведе същата последователност в обратен ред, като преди това я запазите в масив.

Основната трудност е, че дължината на последователността е неизвестна и следователно размерът на масива, необходим за съхраняване на последователността, също е неизвестен. Следователно е необходимо да се действа по следния начин:

1. Използвайте динамични масиви: указатели и преразпределена памет.

2. Програмата трябва да създаде масив с някакъв размер.

3. Данните се четат като докато (в >> d), т.е. до края на входния поток.

4. След прочитане числото се записва в масива.

5. Ако размерът на динамичния масив не е достатъчен, трябва да преразпределите паметта: създайте нов по-голям масив с помощта на новия оператор, копирайте всички предварително прочетени данни в него, освободете паметта, заета от стария масив, използвайки оператора за изтриване .