File handling: fix russian description and add translation (#33988)
parent
8bf9bd319e
commit
7ce8046792
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue