15_Files
.pdfФайлы
Алтайский государственный университет Математический факультет Кафедра информатики
Барнаул 2009
|
|
|
|
План |
2 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Лекция 12
Текстовые файлы
Бинарные файлы
Прочие функции для работы с файлами
Предопределенные файлы
Несколько заданий для самопроверки
|
|
|
|
Три задания для самопроверки |
4 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задание 1
Что выведет на экран следующая программа?
#include <stdio.h>
void main(){
char x[80] = "А вы знаете, что 2x2=4?“; *(x+1) = ’ж’ - 3;
*(x+2) = x[7]; x[3] = 0; printf("%s",x);
}
Ага
|
|
|
|
Три задания для самопроверки |
5 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задание 2
Перепишите следующий фрагмент программы, используя цикл do…while вместо цикла while.
int Sum = 0; |
|
|
int Sum = 0; |
int Max = 1900; |
|
int Max = 1900; |
|
while (Max < |
1950) { |
|
do { |
Sum = Sum |
+ (Max - 1900); |
|
Sum = Sum + (Max - 1900); |
printf("Sum: %d\n",Sum); |
|
printf("Sum: %d\n",Sum); |
|
Max = Max + 5; |
|
Max = Max + 5; |
|
} |
|
|
} while (Max < 1950); |
|
|
|
|
|
|
|
|
Три задания для самопроверки |
6 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задание 3
Перепишите следующий фрагмент программы, используя цикл do…while вместо цикла while.
int Sum = 0; int Max;
printf("Max="); scanf("%d",&Max);
while ((Max < 1950)){
Sum = Sum + (Max - 1900); printf("Sum: %d\n",Sum); Max = Max + 5;
}
int Sum = 0; int Max;
printf("Max="); scanf("%d",&Max);
if(Max < 1950) do {
Sum = Sum + (Max - 1900); printf("Sum: %d\n",Sum); Max = Max + 5;
} while (Max < 1950);
Текстовые файлы
Общие сведения
Открытие текстовых файлов
Возможные ошибки
Чтение/запись в текстовые файлы
Примеры
|
|
|
|
Текстовые файлы |
8 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
Файлы
Файл – это область на диске, имеющая имя.
Файлы
Текстовые
только текст без оформления, не содержат управляющих символов (с кодами < 32), кроме перевода строки
ACSII (1 байт на символ) UNICODE (2 байта на символ)
*.txt, *.log, *.htm, *.html
Двоичные |
Папки |
|
(каталоги) |
||
могут содержать любые |
||
|
||
символы кодовой таблицы |
|
*.doc, *.exe, *.bmp, *.jpg, *.wav, *.mp3, *.avi, *.mpg
|
|
|
|
Текстовые файлы |
9 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
Принцип сэндвича Переменная типа
«указатель на файл»:
FILE *f;
I этап. открыть файл (сделать его активным, приготовить к работе)
для чтения ("r", англ. read)
f = fopen("qq.dat", "r");
для записи ("w", англ. write)
f = fopen("qq.dat", "w");
для добавления ("a", англ. append)
f= fopen("qq.dat", "a");
IIэтап: работа с файлом
fscanf ( f, "%d", &n ); // ввести значение n fprintf( f, "n=%d", n ); // записать значение n
III этап: закрыть (освободить) файл
fclose ( f );
|
|
|
|
Текстовые файлы |
10 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
Работа с файлами
Особенности:
•имя файла упоминается только в команде fopen, обращение к файлу идет через указатель f;
•файл, который открывается на чтение, должен
существовать
•если файл, который открывается на запись, существует, старое содержимое уничтожается
•данные (этим способом) записываются в файл в текстовом виде
•когда программа заканчивает работу, все файлы закрываются автоматически
•после закрытия файла переменную f можно использовать еще раз для работы с другим файлом