- •Алгоритмы и свойства алгоритмов.
- •Блок-схема.
- •Основные управляющие конструкции.
- •Арифметические операции.
- •Приоритет и порядок вычислений
- •Преобразование типов при выполнении операций.
- •Операции увеличения и уменьшения.
- •Математические библиотечные функции.
- •Операции отношений.
- •Логические операторы.
- •Приоритеты логических операций.
- •2Ая лекция.
- •Операторы цикла.
- •Операторы BreakиContinue.
- •Указатели.
- •Объявление указателей.
- •Классы памяти.
- •Инициализация указателей.
- •Указатель на неопределенный тип.
- •Выражения с указателями.
- •Операции с указателями.
- •Указатели и массивы.
- •Удаление памяти.
- •Указатели многомерных массивов.
- •Свободные массивы.
- •Функции.
- •Передача массива в виде параметра.
- •Классы памяти.
- •Макрофункции.
- •Вложенные структуры.
- •Работа с файлами.
- •Работа с бинарными файлами.
Работа с файлами.
Для работы с файлами в языке СИ используется библиотека stdio.h. перед началом работы с файлом его следует открыть, что достигается с помощью функцииfopen().
FILE*fopen(const char* filename, const char* mode). В данном случаеfilename– строка содержащая путь и имя файла,modeстрока определяющая режим открытия файла на чтение или на запись.FILE* - специальный тип данных, созданный для работы с файлом.
NULLпоявляется если файл не открыт или произошла ошибка, иначе другое значение. Пример записи текстовой информации фай
ла:
#include<stdio.h>
Main(){
Char str[]=”моя строка”;
FILE *fp=fopen(“myfile.txt”, “w”);
If (fp!=NULL){
Printf(“пишем в файл”);
For (int i=0; i<strlen(str); i++)
Puts(str[i], fp);}
Else
printf(“ошибка при открытии файла”);
fclose(fp);fp– поток для работы с файлом
wозначает открытие файла на запись с удалением всей информации из него. Если файл открыт успешно,fp!=NULLи с ним возможна работа. Далее с помощьюputsвыполняем запись символов, на которые указываетfp. Чтобы не потерять информацию, с помощьюfcloseзакрываем файл, на который указываетfp.
Пример чтения файла:
#include<stdio.h>
Main(){
Char str[100];
FILE *fp=fopen(“myfile .txt”, “r”);
If (fp!=NULL){
Int i=0;
Char ch;
While ((ch=getc(fp))!=EOF)
Str[i++]=ch;
Str[i]=’\0’;
Printf(str);}
Else printf(“ошибка открытия”);
Fclose(fp);
R– открытие файла на чтение
Работ а с файлами типа puts() иgets() не всегда удобна, т.к. это посимвольный ввод и вывод.
Fputsиfgetsсо строкой.
Пример использования построчного ввода и вывода.
Char[]=”моя строка”;
FILE *fp= fopen(“my.txt”, “w”);
If (fp!=NULL){
Fputs(str, fp);
Fclose(fp);
Fp=fopen(“my.txt”, “r”);
If (fp!=NULL){
Fgets(str, sizeof(str), fp;
printf(str));
}
Fclose(fp);
Для файлов также адаптированы fprintf, fscanf.
Пример:
#define N 2
Struct tag_book{
Char name[100];
Char title [100];
Int year;} books[N];
Main (){
For (int i=0; i<N;i++){
Scanf(“%s”, books[i].name);
Scanf(“%s”, book[i].title);
Scanf(“%d”, &books[i].year);
}
FILE *fp=fopen(“my.txt”, “w”);
For (int i=0;i<N; i++)
Fprintf(fp,“%s %s %d”, books[i].name, books[i].title, books[i].year);
Fclose(fp);
Fp=fopen(“my.txt”, “r”);
For (int i=0; i<N; i++)
Fscanf(fp, то же что и в принтфе но зеркально);
Fclose (fp);
Онегин Пушкин .
Fseek();
Ftell();
Int fseek(FILE *fp, long offset, int origin);
Long ftell(FILE *fp);
SEEK_END – конец файла
SEEK_SET– начало файла
SEEK_CUR– текущая позиция
FILE *fp=fopen(“my.txt”, “w”);
Fprintf(fp, “моя строка”);
Fclose(fp);
Fp=fpen(“my.txt”, “r”);
Char ch;
Fseek(fp, 0L, SEEK_END);
Long length=ftell(fp);
For(int i=0;i<length;i++)
Fseek(fp, I; SEEK_SET;)
Ch=gets(fp);
Putchar(ch);
}
Работа с бинарными файлами.
“wb” – запись
“rb” – чтение.
Пример:
Fread();
Fwrite();
Size_tfread(void*buffer,size_tsize,size_tcount,FILE*fp);buffer– это указатель на буфер памяти, в которую будут считываться данные.Size– размер элементов в байтах. Использование этих функций:
Файл буквы алфавита.
FILE *fp=fopen(“me.out”, “wb”);
Char list [32];
Int I, numread, numwritten;
For(i=0;i<32;i++)
List[i]=(char)(‘a’+i);
New written=fwrite(list, sizeof(char), 32, fp);
Printf(“написать %dсимволов”,numwritten);
Fclose(fp);
Чтобы можно было дописывать файл, вместо “r(b)” нужно ставить “a(b)”.
Feof(fp);
Int remove (const char *path);
Int rename (const char *oldname, const char *newname);