SlideShare a Scribd company logo
Файловый
ввод/вывод на
‘C’
Что такое файл?
Файлом можно назвать месторасположение потоков битов.
Он может быть находиться в одном месте или в нескольких
местах, но он представляется одним потоком.
Что такое поток?
Поток не связан с железом, это линейная очередь которая
связывает файл с программой посредством которого возможно
передавать данные в оба направления. Таким образом, он не
зависит от устройства которое мы используем.
Мы также можем определить поток как источник данных.
Этим источником могут быть
(a) Файл
(b) Жесткий диск, флеш накопитель, CD, DVD и т.д.
(c) Другие устройства ввода/вывода (принтер, дисплей и т.д.)
В языке С существуют два типа потока.
(a) Текстовые потоки
(b) Бинарные (двоичные) потоки
Что такое буфер?
Буфер – это техника, которая позволяет уменьшить
количество вызовов ввода/вывода.
Базовые операции с
файлами
• Открытие файла
• Чтение данных из файла
• Запись данных в файл
• Закрытие файла
Открытие файла
• Файл должен быть“открыт” перед тем, как выполнять
операции ввода/вывода
FILE *fp;
:
fp = fopen (filename, mode);
o fp объявление указателя на тип данных FILE.
o filename это строка, указывающая на путь и имя файла.
o fopen возвращает указатель на файл.
o mode это строка, которая указывает на цель открытия
файла:
“r” :: только для чтения
“w” :: только для записи
“a” :: для добавление данных в файл
“rb” :: только для чтения в бинарном режиме
“wb” :: только для записи в бинарном режиме
“ab” :: для добавление данных в файл в бинарном
режиме
“r+” :: открытие для чтения и записи
“w+” :: для записи, если нет, то создает
Закрытие файла
• После того, как все операции с файлом
были выполнены, он должен быть закрыт
o Обеспечив это все данные, которые находятся в буфере памяти будут
соответственно записаны в файл.
• Общий формат: fclose (file_pointer) ;
FILE *xyz ;
xyz = fopen (“test”, “w”) ;
…….
fclose (xyz) ;
Создание файла
#include<сstdio>
main()
{
FILE *p;
p = fopen(“abcd.txt", "w");
if(p) {
printf("created");
}
else {
printf("not created");
}
fclose(p);
}
#pragma warning(disable : 4996)
Операции чтения/записи в файл.1
• Простые функции чтения/записи getc и putc.
• getc используется для чтения очередного
символа из файла и возвращает его.
char ch; FILE *fp;
…..
ch = getc (fp) ;
o getc возвратит маркер EOF, когда конец файла будет
достигнут.
• putc используется для записи символа в файл.
char ch; FILE *fp;
……
putc (c, fp) ;
Операции чтения/записи в файл.2
• Функции чтения/записи fgets и fputs.
• fgets считывает строку начиная с текущей позиции.
FILE *fp;
…..
char *fgets( char *string, int max_count, FILE *fp) ;
o функция возвращает считанную строку, если произошла
ошибка или достигнут конец файла возвращается 0.
• fputs записывает строку в файл, начиная с текущей
позиции.
FILE *fp;
……
int fputs( const char *string, FILE *stream )
o если функция отрабатывает успешно из неё возвращается
неотрицательное значение. При ошибке возвращается
EOF.
Операции чтения/записи в файл.3
• Функции чтения/записи fread и fwrite.
• fread считывает данные из файла в буфер.
size_t fread( void *buffer, size_t size, size_t count, FILE *fp) ;
o buffer - адрес массива, куда запишутся данные
o size - размер элемента массива в байтах
o count - максимальное количество элементов для считывания
• fwrite записывает массив данных в файл.
size_t fwrite( const void *buffer, size_t size, size_t count, FILE
*fp);
Операции чтения/записи в файл.4
• Мы также можем использовать файловые
версии функций scanf и printf, называемые fscanf
и fprintf.
• Общий формат:
fscanf (FILE *pf, char *string, list) ;
fprintf (FILE *fp, char *string, list) ;
• Пример:
fscanf (fp, “%d %s %f”, &roll, dept_code, &cgpa) ;
fprintf (out, “nThe result is: %d”, xyz) ;
Запись в файл
#include<stdio.h>
int main()
{
FILE *p;
p=fopen(“file1.txt","w");
if(p) {
printf("openedn");
fputs("hello i am a student",p);
}
else {
printf("not openedn");
exit(1);
}
fclose(p);
return 0;
}
Открыть файл в
программе по умолчанию
// мы можем открыть любой файл в программе
// которая связана с этим файлом
//Например- ppt,txt,jpg,mp3 etc.
#include<cstdlib>
main()
{
system(“D:abcdxyz.mp3");
}
Представленный код будет проигрывать файл xyz.mp3 в
Windows Media Player(программа по умолчанию)
Расположенный на диске D в папке abcd
Создание, Запись и
Чтение файла Вместе.1
//Эта программа демонстрирует создание, запись и чтение файла вместе
#include<cstdio>
int main()
{
FILE *fp;
char t;
//создание
fp=fopen("yashuu.txt","w");
if(fp) {
printf("createdn");
}
else {
printf("not createdn");
exit(1);
}
//запись
fputs("this is yashu", fp);
fcolse(fp);
Создание, Запись и
Чтение файла Вместе.2
//чтение
y=fopen("yashuu.txt","r");
if(fp) {
printf("openedn");
}
else {
printf("not openedn");
exit(1);
}
while((t=fgetc(y))!=EOF) {
//fgetc используется для чтение
//символа из файла
printf("%c",t);
}
fclose(y);
return 0;
}
Подсчет количества
символов в файле
#include<cstdio>
int main()
{
FILE *fp;
int count = 0;
char ch;
fp = fopen("hh.txt","r");
while(ch=fgetc(fp))!=EOF) {
count++;
}
printf("%d",count);
fclose(fp);
return 0;
}
Подсчет количества
строк в файле
#include<cstdio>
int main()
{
FILE *fp;
int count=0;
char buffer[256];
fp=fopen("yy.txt","r");
while(feof(fp)) {
fgets(buffer, 256, fp);
count++;
}
count++;
printf("%d",count);
fclose(fp);
return 0;
}
Подсчет количества
слов в файле
#include<cstdio>
int main()
{
int count=0;
char ch;
FILE *fp;
y=fopen("fight.txt","r");
while((ch=fgetc(fp))!=EOF) {
if(ch==32) {
count++;
}
}
count++;
printf("%d",count);
fclose(fp);
return 0;
}
Добавить данные в файл
#include<cstdio>
int main()
{
FILE *fp;
char a;
p=fopen("yashu65.txt","a");
if(fp) {
printf("openedn");
fputs("hello i m yashun",fp);
} else {
printf("not openedn");
exit(1);
}
fclose(fp);
return 0;
}
Введение в fseek().1
Устанавливает позицию смещение потока .
Введение в fseek().2
int fseek ( FILE *stream, int offset [, int whence] )
Параметры
• stream -- указатель на открытый файл.
• offset -- смещение, измеряемое в байтах от
начала файла.
• whence -- точка, от которой производится
смещение:
Введение fseek().3
Константа Описание
SEEK_SET Начало файла
SEEK_CUR Текущая позиция
SEEK_END Конец файла
Введение в fseek().4
Возвращаемое значение
Функция возвращает значение 0, если указатель
файла успешно перемещен, и ненулевое
значение в случае неудачного завершения.
fseek() считать с 6й
позиции
#include <cstdio>
main ()
{
FILE *fp;
char c;
fp = fopen("file.txt","r");
fseek( fp, 5, SEEK_SET );
while((c=fgetc(fp))!=EOF)
{
printf("%c",c);
}
fclose(fp);
}
fseek() пример
перезаписи
#include <сstdio>
main ()
{
FILE *fp;
fp = fopen("file.txt","w");
fputs("This is krish", fp);
fseek( fp, 2, SEEK_SET );
fputs("at", fp);
fclose(fp);
}
fseek() пример для
SEEK_SET.1
В примере использования файла ‘abc.txt’ содержащего
“abcdefghijklmnopqrstuvwxyz”
константа SEEK_SET используется для отсчета с начала файла
#include<cstdio>
#include<cstring>
main()
{
FILE *fp=fopen("abc.txt","r");
char b;
int i;
// пропускаем первые 5 символов используя цикл
for(i=0;i<5;i++) {
b=fgetc(fp);
}
fseek() пример для
SEEK_SET.2
h
fseek(y,sizeof(char)*7,SEEK_SET);
b=fgetc(fp);
printf("%c",b);
fclose(fp);
}
Вывод программы–
Потому, что пропускается 7 символов с начала и 8й символ в этом файле ‘h’
fseek() пример для
SEEK_CUR.1
В примере использования файла ‘abc.txt’ содержащего
“abcdefghijklmnopqrstuvwxyz”
• Константа SEEK_CUR отсчитывает с текущей позиции файла
• #include<cstdio>
• #include<cstring>
• main()
• {
• FILE *y=fopen("abc.txt","r");
• char b;
• int i;
• //пропустить 5 символов используя цикл
• for(i=0;i<5;i++)
• {
• b=fgetc(y);
• }
fseek() пример
дляSEEK_CUR.2
fseek(y, sizeof(char)*7,SEEK_CUR);
b=fgetc(y);
printf("%c",b);
}
Вывод программы –
Потому, что пропускаются 7 символов с текущей позиции,
которой является 5; значит 5+7 = 12 символов пропущено.
13й символ - это ‘m’.
m
fseek() пример для
SEEK_END
В примере использования файла ‘abc.txt’ содержащего
“abcdefghijklmnopqrstuvwxyz”
SEEK_END устанавливает указатель в конец файла
#include<сstdio>
#include<сstring>
main()
{
FILE *fp=fopen("abc.txt","r");
char b;
fseek(y,-10,SEEK_END);
b=fgetc(y);
printf("%c",b);
}
Вывод программы – q
-10 значит 10-ая позиция с конца, которая есть ‘q’.
Пример для ftell()
#include <сstdio>
main ()
{
FILE *fp;
char c;
fp = fopen("file.txt","r");
fseek( fp, 5, SEEK_SET );
while((c=fgetc(fp))!=EOF)
{
printf("%c - position : %dn",c,ftell(fp));
}
fclose(fp);
}
Считывание числа из
файла
#include<сstdio>
main()
{
FILE *p;
int sum=0,number;
p=fopen("kl.txt","r");
if(p==NULL) {
printf("file not opened ");
} else {
while(!feof(p)) {
fscanf(p,"%d",&number);
printf("%dn",number);
sum=sum+number;
}
printf("%d",sum);
fclose(p);
}
}
Переименование
файла
#include <сstdio>
main()
{
int result;
char oldname[] ="rt.txt";
char newname[] ="network.txt";
result= rename( oldname , newname );
if ( result == 0 ) {
puts ( "File successfully renamed"
);
} else {
perror( "Error renaming file" );
}
}
Удаление файла
#include <сstdio>
main ()
{
if( remove( "debug.log" ) != 0 ) {
perror( "Error deleting file" );
} else {
puts( "File successfully deleted" );
}
}
Создание директорий
#include<cstdlib>
#include<cstdio>
main()
{
//если директория существует – возвращает true,
// иначе - false
int a=system("mkdir d:vikasabcd");
// int a = _mkdir(“d:vikasabcd”)
if(a) {
printf("folder not created");
} else {
printf("folder created");
}
}
Переименование
директорий
#include <stdio.h>
main()
{
int result;
char oldname[] ="faltu";
char newname[] ="faltu2";
result= rename( oldname , newname );
if ( result == 0 ) {
puts ( "Folder successfully renamed" );
} else {
perror( "Error renaming Folder" );
}
}
Вывод содержимого
директории
#include<cstdio>
main()
{
system("dir d:fca");
}
Удаление директорий
#include <stdio.h>
main ()
{
// int a = _rmdir(“d:vikasabcd”);
if( system("rmdir rt") ) {
perror( "Error deleting folder" );
} else {
puts( "Folder successfully deleted" );
}
}
Ad

More Related Content

What's hot (20)

Что нового в PHP-5.3
Что нового в PHP-5.3 Что нового в PHP-5.3
Что нового в PHP-5.3
phpclub
 
Язык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовЯзык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистов
Andrew Shitov
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
Technopark
 
О безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersО безопасном использовании PHP wrappers
О безопасном использовании PHP wrappers
Positive Hack Days
 
Reform: путь к лучшему ORM
Reform: путь к лучшему ORMReform: путь к лучшему ORM
Reform: путь к лучшему ORM
Badoo Development
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
Technopark
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
Alexey Paznikov
 
Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bash
kuchinskaya
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3
Technopark
 
Статический анализ: ошибки в медиаплеере и безглючная аська
Статический анализ: ошибки в медиаплеере и безглючная аська Статический анализ: ошибки в медиаплеере и безглючная аська
Статический анализ: ошибки в медиаплеере и безглючная аська
Tatyanazaxarova
 
Lec 5
Lec 5Lec 5
Lec 5
Alexander Rusin
 
Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех
Minsk Linux User Group
 
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolПаттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Alexandre Kalendarev
 
Web весна 2012 лекция 2
Web весна 2012 лекция 2Web весна 2012 лекция 2
Web весна 2012 лекция 2
Technopark
 
Python i18n
Python i18nPython i18n
Python i18n
Руслан Юлдашев
 
Groovy On Grails
Groovy On GrailsGroovy On Grails
Groovy On Grails
guest32215a
 
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 Practical Python Packaging / Стас Рудаков / Web Developer Wargaming Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
Python Meetup
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
BlackFan
 
встроен функции
встроен функциивстроен функции
встроен функции
LidiKashka
 
Что нового в PHP-5.3
Что нового в PHP-5.3 Что нового в PHP-5.3
Что нового в PHP-5.3
phpclub
 
Язык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовЯзык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистов
Andrew Shitov
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
Technopark
 
О безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersО безопасном использовании PHP wrappers
О безопасном использовании PHP wrappers
Positive Hack Days
 
Reform: путь к лучшему ORM
Reform: путь к лучшему ORMReform: путь к лучшему ORM
Reform: путь к лучшему ORM
Badoo Development
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
Technopark
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
Alexey Paznikov
 
Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bash
kuchinskaya
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3
Technopark
 
Статический анализ: ошибки в медиаплеере и безглючная аська
Статический анализ: ошибки в медиаплеере и безглючная аська Статический анализ: ошибки в медиаплеере и безглючная аська
Статический анализ: ошибки в медиаплеере и безглючная аська
Tatyanazaxarova
 
Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех
Minsk Linux User Group
 
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolПаттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Alexandre Kalendarev
 
Web весна 2012 лекция 2
Web весна 2012 лекция 2Web весна 2012 лекция 2
Web весна 2012 лекция 2
Technopark
 
Groovy On Grails
Groovy On GrailsGroovy On Grails
Groovy On Grails
guest32215a
 
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 Practical Python Packaging / Стас Рудаков / Web Developer Wargaming Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
Python Meetup
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
BlackFan
 
встроен функции
встроен функциивстроен функции
встроен функции
LidiKashka
 

Similar to file handling in c (20)

Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
Technopark
 
File input/output in VHDL
File input/output in VHDLFile input/output in VHDL
File input/output in VHDL
vitaliykulanov
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
metaform
 
лабораторная работа №7
лабораторная работа №7лабораторная работа №7
лабораторная работа №7
Zhanna Kazakova
 
Python: ввод и вывод
Python: ввод и выводPython: ввод и вывод
Python: ввод и вывод
Theoretical mechanics department
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Vladimir Kochetkov
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
DneprCiklumEvents
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
Computer Science Club
 
лабораторная работа №9
лабораторная работа №9лабораторная работа №9
лабораторная работа №9
Zhanna Kazakova
 
лабораторная работа №9
лабораторная работа №9лабораторная работа №9
лабораторная работа №9
Zhanna Kazakova
 
п о файловая система
п о файловая системап о файловая система
п о файловая система
krasoa2009
 
Groovy presentation.
Groovy presentation.Groovy presentation.
Groovy presentation.
Infinity
 
Hl2008 Hp Server Design 169
Hl2008 Hp Server Design 169Hl2008 Hp Server Design 169
Hl2008 Hp Server Design 169
Media Gorod
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
Pavel Tsukanov
 
Root Conf2009 Fin
Root Conf2009 FinRoot Conf2009 Fin
Root Conf2009 Fin
Liudmila Li
 
JavaDay'14
JavaDay'14JavaDay'14
JavaDay'14
Kirill Golodnov
 
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux
DefconRussia
 
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Yandex
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
Andrew Mayorov
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
Technopark
 
File input/output in VHDL
File input/output in VHDLFile input/output in VHDL
File input/output in VHDL
vitaliykulanov
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
metaform
 
лабораторная работа №7
лабораторная работа №7лабораторная работа №7
лабораторная работа №7
Zhanna Kazakova
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Vladimir Kochetkov
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
DneprCiklumEvents
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
Computer Science Club
 
лабораторная работа №9
лабораторная работа №9лабораторная работа №9
лабораторная работа №9
Zhanna Kazakova
 
лабораторная работа №9
лабораторная работа №9лабораторная работа №9
лабораторная работа №9
Zhanna Kazakova
 
п о файловая система
п о файловая системап о файловая система
п о файловая система
krasoa2009
 
Groovy presentation.
Groovy presentation.Groovy presentation.
Groovy presentation.
Infinity
 
Hl2008 Hp Server Design 169
Hl2008 Hp Server Design 169Hl2008 Hp Server Design 169
Hl2008 Hp Server Design 169
Media Gorod
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
Pavel Tsukanov
 
Root Conf2009 Fin
Root Conf2009 FinRoot Conf2009 Fin
Root Conf2009 Fin
Liudmila Li
 
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux
DefconRussia
 
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Yandex
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
Andrew Mayorov
 
Ad

More from Maxim Shaptala (8)

Mva stf module 6 - rus
Mva stf module 6 - rusMva stf module 6 - rus
Mva stf module 6 - rus
Maxim Shaptala
 
Mva stf module 5 - rus
Mva stf module 5 - rusMva stf module 5 - rus
Mva stf module 5 - rus
Maxim Shaptala
 
Mva stf module 4 - rus
Mva stf module 4 - rusMva stf module 4 - rus
Mva stf module 4 - rus
Maxim Shaptala
 
Mva stf module 3 - rus
Mva stf module 3 - rusMva stf module 3 - rus
Mva stf module 3 - rus
Maxim Shaptala
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rus
Maxim Shaptala
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
Maxim Shaptala
 
02 beginning code first
02   beginning code first02   beginning code first
02 beginning code first
Maxim Shaptala
 
01 introduction to entity framework
01   introduction to entity framework01   introduction to entity framework
01 introduction to entity framework
Maxim Shaptala
 
Mva stf module 6 - rus
Mva stf module 6 - rusMva stf module 6 - rus
Mva stf module 6 - rus
Maxim Shaptala
 
Mva stf module 5 - rus
Mva stf module 5 - rusMva stf module 5 - rus
Mva stf module 5 - rus
Maxim Shaptala
 
Mva stf module 4 - rus
Mva stf module 4 - rusMva stf module 4 - rus
Mva stf module 4 - rus
Maxim Shaptala
 
Mva stf module 3 - rus
Mva stf module 3 - rusMva stf module 3 - rus
Mva stf module 3 - rus
Maxim Shaptala
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rus
Maxim Shaptala
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
Maxim Shaptala
 
02 beginning code first
02   beginning code first02   beginning code first
02 beginning code first
Maxim Shaptala
 
01 introduction to entity framework
01   introduction to entity framework01   introduction to entity framework
01 introduction to entity framework
Maxim Shaptala
 
Ad

file handling in c

  • 2. Что такое файл? Файлом можно назвать месторасположение потоков битов. Он может быть находиться в одном месте или в нескольких местах, но он представляется одним потоком.
  • 3. Что такое поток? Поток не связан с железом, это линейная очередь которая связывает файл с программой посредством которого возможно передавать данные в оба направления. Таким образом, он не зависит от устройства которое мы используем. Мы также можем определить поток как источник данных. Этим источником могут быть (a) Файл (b) Жесткий диск, флеш накопитель, CD, DVD и т.д. (c) Другие устройства ввода/вывода (принтер, дисплей и т.д.) В языке С существуют два типа потока. (a) Текстовые потоки (b) Бинарные (двоичные) потоки
  • 4. Что такое буфер? Буфер – это техника, которая позволяет уменьшить количество вызовов ввода/вывода.
  • 5. Базовые операции с файлами • Открытие файла • Чтение данных из файла • Запись данных в файл • Закрытие файла
  • 6. Открытие файла • Файл должен быть“открыт” перед тем, как выполнять операции ввода/вывода FILE *fp; : fp = fopen (filename, mode); o fp объявление указателя на тип данных FILE. o filename это строка, указывающая на путь и имя файла. o fopen возвращает указатель на файл. o mode это строка, которая указывает на цель открытия файла: “r” :: только для чтения “w” :: только для записи “a” :: для добавление данных в файл “rb” :: только для чтения в бинарном режиме “wb” :: только для записи в бинарном режиме “ab” :: для добавление данных в файл в бинарном режиме “r+” :: открытие для чтения и записи “w+” :: для записи, если нет, то создает
  • 7. Закрытие файла • После того, как все операции с файлом были выполнены, он должен быть закрыт o Обеспечив это все данные, которые находятся в буфере памяти будут соответственно записаны в файл. • Общий формат: fclose (file_pointer) ; FILE *xyz ; xyz = fopen (“test”, “w”) ; ……. fclose (xyz) ;
  • 8. Создание файла #include<сstdio> main() { FILE *p; p = fopen(“abcd.txt", "w"); if(p) { printf("created"); } else { printf("not created"); } fclose(p); } #pragma warning(disable : 4996)
  • 9. Операции чтения/записи в файл.1 • Простые функции чтения/записи getc и putc. • getc используется для чтения очередного символа из файла и возвращает его. char ch; FILE *fp; ….. ch = getc (fp) ; o getc возвратит маркер EOF, когда конец файла будет достигнут. • putc используется для записи символа в файл. char ch; FILE *fp; …… putc (c, fp) ;
  • 10. Операции чтения/записи в файл.2 • Функции чтения/записи fgets и fputs. • fgets считывает строку начиная с текущей позиции. FILE *fp; ….. char *fgets( char *string, int max_count, FILE *fp) ; o функция возвращает считанную строку, если произошла ошибка или достигнут конец файла возвращается 0. • fputs записывает строку в файл, начиная с текущей позиции. FILE *fp; …… int fputs( const char *string, FILE *stream ) o если функция отрабатывает успешно из неё возвращается неотрицательное значение. При ошибке возвращается EOF.
  • 11. Операции чтения/записи в файл.3 • Функции чтения/записи fread и fwrite. • fread считывает данные из файла в буфер. size_t fread( void *buffer, size_t size, size_t count, FILE *fp) ; o buffer - адрес массива, куда запишутся данные o size - размер элемента массива в байтах o count - максимальное количество элементов для считывания • fwrite записывает массив данных в файл. size_t fwrite( const void *buffer, size_t size, size_t count, FILE *fp);
  • 12. Операции чтения/записи в файл.4 • Мы также можем использовать файловые версии функций scanf и printf, называемые fscanf и fprintf. • Общий формат: fscanf (FILE *pf, char *string, list) ; fprintf (FILE *fp, char *string, list) ; • Пример: fscanf (fp, “%d %s %f”, &roll, dept_code, &cgpa) ; fprintf (out, “nThe result is: %d”, xyz) ;
  • 13. Запись в файл #include<stdio.h> int main() { FILE *p; p=fopen(“file1.txt","w"); if(p) { printf("openedn"); fputs("hello i am a student",p); } else { printf("not openedn"); exit(1); } fclose(p); return 0; }
  • 14. Открыть файл в программе по умолчанию // мы можем открыть любой файл в программе // которая связана с этим файлом //Например- ppt,txt,jpg,mp3 etc. #include<cstdlib> main() { system(“D:abcdxyz.mp3"); } Представленный код будет проигрывать файл xyz.mp3 в Windows Media Player(программа по умолчанию) Расположенный на диске D в папке abcd
  • 15. Создание, Запись и Чтение файла Вместе.1 //Эта программа демонстрирует создание, запись и чтение файла вместе #include<cstdio> int main() { FILE *fp; char t; //создание fp=fopen("yashuu.txt","w"); if(fp) { printf("createdn"); } else { printf("not createdn"); exit(1); } //запись fputs("this is yashu", fp); fcolse(fp);
  • 16. Создание, Запись и Чтение файла Вместе.2 //чтение y=fopen("yashuu.txt","r"); if(fp) { printf("openedn"); } else { printf("not openedn"); exit(1); } while((t=fgetc(y))!=EOF) { //fgetc используется для чтение //символа из файла printf("%c",t); } fclose(y); return 0; }
  • 17. Подсчет количества символов в файле #include<cstdio> int main() { FILE *fp; int count = 0; char ch; fp = fopen("hh.txt","r"); while(ch=fgetc(fp))!=EOF) { count++; } printf("%d",count); fclose(fp); return 0; }
  • 18. Подсчет количества строк в файле #include<cstdio> int main() { FILE *fp; int count=0; char buffer[256]; fp=fopen("yy.txt","r"); while(feof(fp)) { fgets(buffer, 256, fp); count++; } count++; printf("%d",count); fclose(fp); return 0; }
  • 19. Подсчет количества слов в файле #include<cstdio> int main() { int count=0; char ch; FILE *fp; y=fopen("fight.txt","r"); while((ch=fgetc(fp))!=EOF) { if(ch==32) { count++; } } count++; printf("%d",count); fclose(fp); return 0; }
  • 20. Добавить данные в файл #include<cstdio> int main() { FILE *fp; char a; p=fopen("yashu65.txt","a"); if(fp) { printf("openedn"); fputs("hello i m yashun",fp); } else { printf("not openedn"); exit(1); } fclose(fp); return 0; }
  • 21. Введение в fseek().1 Устанавливает позицию смещение потока .
  • 22. Введение в fseek().2 int fseek ( FILE *stream, int offset [, int whence] ) Параметры • stream -- указатель на открытый файл. • offset -- смещение, измеряемое в байтах от начала файла. • whence -- точка, от которой производится смещение:
  • 23. Введение fseek().3 Константа Описание SEEK_SET Начало файла SEEK_CUR Текущая позиция SEEK_END Конец файла
  • 24. Введение в fseek().4 Возвращаемое значение Функция возвращает значение 0, если указатель файла успешно перемещен, и ненулевое значение в случае неудачного завершения.
  • 25. fseek() считать с 6й позиции #include <cstdio> main () { FILE *fp; char c; fp = fopen("file.txt","r"); fseek( fp, 5, SEEK_SET ); while((c=fgetc(fp))!=EOF) { printf("%c",c); } fclose(fp); }
  • 26. fseek() пример перезаписи #include <сstdio> main () { FILE *fp; fp = fopen("file.txt","w"); fputs("This is krish", fp); fseek( fp, 2, SEEK_SET ); fputs("at", fp); fclose(fp); }
  • 27. fseek() пример для SEEK_SET.1 В примере использования файла ‘abc.txt’ содержащего “abcdefghijklmnopqrstuvwxyz” константа SEEK_SET используется для отсчета с начала файла #include<cstdio> #include<cstring> main() { FILE *fp=fopen("abc.txt","r"); char b; int i; // пропускаем первые 5 символов используя цикл for(i=0;i<5;i++) { b=fgetc(fp); }
  • 28. fseek() пример для SEEK_SET.2 h fseek(y,sizeof(char)*7,SEEK_SET); b=fgetc(fp); printf("%c",b); fclose(fp); } Вывод программы– Потому, что пропускается 7 символов с начала и 8й символ в этом файле ‘h’
  • 29. fseek() пример для SEEK_CUR.1 В примере использования файла ‘abc.txt’ содержащего “abcdefghijklmnopqrstuvwxyz” • Константа SEEK_CUR отсчитывает с текущей позиции файла • #include<cstdio> • #include<cstring> • main() • { • FILE *y=fopen("abc.txt","r"); • char b; • int i; • //пропустить 5 символов используя цикл • for(i=0;i<5;i++) • { • b=fgetc(y); • }
  • 30. fseek() пример дляSEEK_CUR.2 fseek(y, sizeof(char)*7,SEEK_CUR); b=fgetc(y); printf("%c",b); } Вывод программы – Потому, что пропускаются 7 символов с текущей позиции, которой является 5; значит 5+7 = 12 символов пропущено. 13й символ - это ‘m’. m
  • 31. fseek() пример для SEEK_END В примере использования файла ‘abc.txt’ содержащего “abcdefghijklmnopqrstuvwxyz” SEEK_END устанавливает указатель в конец файла #include<сstdio> #include<сstring> main() { FILE *fp=fopen("abc.txt","r"); char b; fseek(y,-10,SEEK_END); b=fgetc(y); printf("%c",b); } Вывод программы – q -10 значит 10-ая позиция с конца, которая есть ‘q’.
  • 32. Пример для ftell() #include <сstdio> main () { FILE *fp; char c; fp = fopen("file.txt","r"); fseek( fp, 5, SEEK_SET ); while((c=fgetc(fp))!=EOF) { printf("%c - position : %dn",c,ftell(fp)); } fclose(fp); }
  • 33. Считывание числа из файла #include<сstdio> main() { FILE *p; int sum=0,number; p=fopen("kl.txt","r"); if(p==NULL) { printf("file not opened "); } else { while(!feof(p)) { fscanf(p,"%d",&number); printf("%dn",number); sum=sum+number; } printf("%d",sum); fclose(p); } }
  • 34. Переименование файла #include <сstdio> main() { int result; char oldname[] ="rt.txt"; char newname[] ="network.txt"; result= rename( oldname , newname ); if ( result == 0 ) { puts ( "File successfully renamed" ); } else { perror( "Error renaming file" ); } }
  • 35. Удаление файла #include <сstdio> main () { if( remove( "debug.log" ) != 0 ) { perror( "Error deleting file" ); } else { puts( "File successfully deleted" ); } }
  • 36. Создание директорий #include<cstdlib> #include<cstdio> main() { //если директория существует – возвращает true, // иначе - false int a=system("mkdir d:vikasabcd"); // int a = _mkdir(“d:vikasabcd”) if(a) { printf("folder not created"); } else { printf("folder created"); } }
  • 37. Переименование директорий #include <stdio.h> main() { int result; char oldname[] ="faltu"; char newname[] ="faltu2"; result= rename( oldname , newname ); if ( result == 0 ) { puts ( "Folder successfully renamed" ); } else { perror( "Error renaming Folder" ); } }
  • 39. Удаление директорий #include <stdio.h> main () { // int a = _rmdir(“d:vikasabcd”); if( system("rmdir rt") ) { perror( "Error deleting folder" ); } else { puts( "Folder successfully deleted" ); } }