diff --git a/guide/russian/c/file-handling/index.md b/guide/russian/c/file-handling/index.md index 61c25e8bf8..a5a4e1f71e 100644 --- a/guide/russian/c/file-handling/index.md +++ b/guide/russian/c/file-handling/index.md @@ -1,12 +1,12 @@ --- title: File Handling -localeTitle: Обработка файлов +localeTitle: Работа с файлами --- -## Обработка файлов +## Работа с файлами ### Введение -Если вы уже написали программу C `helloworld` , вы уже сделали файл IO в C! Поздравляем! : Тада: +Если вы уже написали программу `helloworld`, вы уже использовали файловый ввод/вывод (input/output, IO) в C! Поздравляем! :tada: ```c /* A simple hello world in C. */ @@ -23,81 +23,90 @@ localeTitle: Обработка файлов } ``` -Обработка файлов - важная часть программиста. В языке C мы используем указатель структуры типа файла для объявления файла +Работа с файлами - один из важнейших аспектов программирования. В языке C для объявления файла используется указатель на структуру типа FILE. ```c FILE *fp; ``` -C предоставляет ряд встроенных функций для выполнения основной операции с файлами +C предоставляет ряд встроенных функций для выполнения основных операций с файлами -**fopen ()** **\-** **создать новый файл или открыть существующий файл** +**fopen() - создать новый файл или открыть существующий файл** -**fclose ()** **\-** **закрыть файл** +**fclose() - закрыть файл** -**getc ()** **\-** **считывает символ из файла** +**getc() - считывает символ из файла** -**putc ()** **\-** **записывает символ в файл** +**putc() - записывает символ в файл** -**fscanf ()** **\-** **считывает набор данных из файла** +**fscanf() - считывает набор данных из файла** -**fprintf ()** **\-** **записывает набор данных в файл** +**fprintf - записывает набор данных в файл** -**getw ()** **\-** **считывает целое число из файла** +**getw() - считывает целое число из файла** -**putw ()** **\-** **записывает целое число в файл** +**putw() - записывает целое число в файл** -**fseek ()** **\-** **установить позицию для желаемой точки** +**fseek() - установить позицию в желаемую точку** -**ftell ()** **\-** **показывает текущую позицию в файле** +**ftell() - показывает текущую позицию в файле** -**rewind ()** **\-** **установить позицию в начальную точку** +**rewind() - установить позицию в начальную точку** ### Открытие файла -Функция **fopen ()** используется для создания файла или открытия существующего файла +Функция **fopen()** используется для создания файла или открытия существующего файла `c fp = fopen(const char filename,const char mode);` -В C существует много режимов открытия файла **r** **\-** **открыть файл в режиме чтения** +В C существует множество режимов открытия файла: -**w** **\-** **открывает или создает текстовый файл в режиме записи** +**r - открывает файл в режиме чтения** -**a** **\-** **открывает файл в режиме добавления** +**w - открывает файл в режиме записи (удаляя его содержимое) или создает его в случае отсутствия** -**r +** **\-** **открывает файл в режиме чтения и записи** +**a - открывает файл в режиме добавления в конец или создает его в случае отсутствия*** -**a +** **\-** **открывает файл в режиме чтения и записи** +**r+ - открывает файл в режиме чтения и записи** -**w +** **\-** **открывает файл в режиме чтения и записи** +**a+ - открывает файл в режиме чтения и записи (добавляет в случае существования)** + +**w+ - открывает файл в режиме чтения и записи (удаляя его содержимое)** Вот пример чтения и записи данных в файл -\`\` \`с #включают +```c +#include +#include -# включают +int main() +{ + FILE *fp; + char ch; + fp = fopen("hello.txt", "w"); + printf("Enter data"); + while( (ch = getchar()) != EOF) { + putc(ch,fp); + } + fclose(fp); + fp = fopen("hello.txt", "r"); -главный() { FILE \* fp; char ch; fp = fopen ("hello.txt", "w"); printf («Введите данные»); while ((ch = getchar ())! = EOF) { putc (ч, FP); } fclose (FP); fp = fopen ("hello.txt", "r"); - -while ((ch = getc (fp)! = EOF) Е ( "% С", ч); - -fclose (FP); } + while( (ch = getc(fp)! = EOF) + printf("%c",ch); + + fclose(fp); +} ``` -Now you might be thinking, "this justs prints text to my screen. How is this file IO?" - The answer isn't obvious at first, and needs some understanding about the UNIX system. - Under a UNIX system, everything is treated as a file, meaning you can read and write from it. - This means that your printer can be abstracted as a file since all you do with a printer is write with it. - It is also useful to think of these files as streams, since as you'll see later, you can redirect them with the shell. +Должно быть, вы думаете: "Это всего лишь выводит текст на экран. С какой стати это файловый ввод/вывод"? Ответ кажется поначалу неочевидным и требует некоторых знаний о системе UNIX. С точки зрения UNIX все является файлом, в том смысле, что вы можете читать из него и записывать в него. Это значит, что принтер может быть отождествлен с файлом, так как все, что вы делаете с принтером - пишете в него. Также полезно думать об этих файлах как о потоках, поскольку, как будет показано позже, их можно перенаправлять с помощью оболочки. - So how does this relate to `helloworld` and file IO? +Как все это связано с `helloworld` и файловым вводом/выводом? - When you call `printf`, you are really just writing to a special file called `stdout`, short for __standard output__. - `stdout` represents, well, the standard output as decided by your shell, which is usually the terminal. - This explains why it printed to your screen. + Когда вы вызываете `printf`, на самом деле происходит запись в специальный файл `stdout`, сокращение от __standard output (стандартный вывод)__. + `stdout` представляет собой, что неудивительно, средство стандартного вывода по выбору вашей оболочки, роль которой чаще всего играет терминал. Это объясняет почему он выводит символы на экран. - There are two other streams (ie files) that are available to you with effort, `stdin` and `stderr`. - `stdin` represents the __standard input__, which your shell usually attaches to the keyboard. - `stderr` represents the __standard error__ output, which your shell usually attaches to the terminal. + Существуют два других потока (т.е. файла) с которыми тоже при желании можно работать, `stdin` и `stderr`. + `stdin` представляет собой __standard input (стандартный ввод)__, которую оболочка обычно привязывает к клавиатуре. + `stderr` представляет собой __standard error (стандартный вывод ошибок)__ , который оболочка обычно привязывает к терминалу. ### Rudimentary File IO, or How I Learnt to Lay Pipes Enough theory, let's get down to business by writing some code! @@ -204,4 +213,4 @@ Then after running `greetings` the file `greet.txt` will contain: ### Дополнительная информация: -* [Страница Wikibooks в файле IO](https://en.wikibooks.org/wiki/C_Programming/File_IO) \ No newline at end of file +* [Страница Wikibooks в файле IO](https://en.wikibooks.org/wiki/C_Programming/File_IO)