File handling: fix russian description and add translation (#33988)

pull/31432/head^2
Aleksei Aksenov 2019-08-08 01:06:12 +03:00 committed by Randell Dawson
parent 8bf9bd319e
commit 7ce8046792
1 changed files with 52 additions and 43 deletions

View File

@ -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<stdio.h>
#include<conio.h>
# включают
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)
* [Страница Wikibooks в файле IO](https://en.wikibooks.org/wiki/C_Programming/File_IO)