Сыртқы мәліметтер ағынымен жұмыс істеу үшін оны ашу керек. Сонда сыртқы мәліметтер программадағы алдын ала анықталған FILE типімен байланыстырылады. Бұл типтің анықталуы stdio.h тақырыптық файлы арқылы атқарылады. FILE типі арқылы мәліметтер ішіндегі позицияларға нұсқауыш, буферге нұсқауыш көрсетіле алады.
Сыртқы мәліметтер ағынына нұсқауыш, мысалы, fp программада былай сипатталады:
#include <stdio.h>
FILE *fp;
1) Сонымен файлды ашатын fopen() функциясының жалпы жазылуы:
fp = fopen (name,mode);, fp = fopen(“ex1.txt”, “w”);
Мұндағы: fp – файлға сілтейтін нұсқауыш; name – сыртқы мәліметтер жазылған немесе жазылатын файл аты, идентификатор; mode – файлдың қандай режимде ашылатынын төмендегідей түрде көрсетеді:
"r" – бұрыннан бар файлды оқу үшін ашу;
"w" – бос файлды мәлімет жазу үшін ашу;
"a" – файл соңына мәлімет қосып жазу үшін оны ашу;
"r+"– файлды одан мәлімет оқу және жазу үшін ашу;
"w+"– бос файлдан мәлімет оқу және оған мәлімет жазу үшін файл ашу (бұрын файл болса, ол өшіріледі);
"a+"– файлдан мәлімет оқу және оның соңына мәлімет қосып жазу үшін ашу).
2)fclose(fp) функциясы ашық файлды жабады.
3)feof(fp) функциясы файл соңын анықтайды.
4)fgets(fp) функциясы файлдан бір символ оқиды.
5)fputc(fp) функциясы файлға бір символ жазады.
6)ferror(fp) функциясы файлға жазу/оқу кезінде қате шыққанын тексереді.
Бұлардағы fp – файлға сілтейтін нұсқауыш;
7-8) Файлға мәлімет жазу/оқу үшін fprintf жәнеfscanf функциялары пайдаланылады.
fprintf - файлға мәлімет жазу үшін, ал fscanf – файлдан мәлімет оқу үшін қолданылады. Олардың жалпы жазылу түрі:
fprintf(fp,“спецификация шаблоны”, p); (мыс: fprintf(fp,“%d”, p))
p - өрнек;
fscanf(fp, “спецификация шаблоны”, адрес); (мыс: fscanf(fp,“%d”, &p))
Mысалы:
#include<stdio.h>
#include<conio.h>
main()
{int k, i, n=5;
char fname[]=”a:\\num.txt\0”;
clrscr();
FILE *fp;
fp=fopen(fname,”w”);
clrscr();
printf("Енгізілген файлдар %s файлына жазылады\n", fname);
puts(“Әр сан енгізген соң Enter басыңыз/n”);
for(i=0; i<n; i++)
{ scanf(“%i”, &k);
Fprintf(fp, “%d”, k); }
fclose(fp);
printf("Енгізілген файлдар %s файлына жазылды\n", fname);
getch(); }
Нәтижесі:
Енгізілген файлдар a:\num.txt файлына жазылады
Әр сан енгізген соң Enter басыңыз
Енгізілген файлдар a:\num.txt файлына жазылды
С программалау тіліндегі мәліметтердің динамикалық құрылымдары. Мәліметтердің абстрактылық типтері.
Динамические структуры по определению характеризуются отсутствием физической смежности элементов структуры в памяти непостоянством и непредсказуемостью размера (числа элементов) структуры в процессе ее обработки.
Поскольку элементы динамической структуры располагаются по непредсказуемым адресам памяти, адрес элемента такой структуры не может быть вычислен из адреса начального или предыдущего элемента. Для установления связи между элементами динамической структуры используются указатели, через которые устанавливаются явные связи между элементами. Такое представление данных в памяти называется связным. Элемент динамической структуры состоит из двух полей:
информационного поля или поля данных, в котором содержатся те данные, ради которых и создается структура; в общем случае информационное поле само является интегрированной структурой - вектором, массивом, другой динамической структурой и т.п.;
поле связок, в котором содержатся один или несколько указателей, связывающий данный элемент с другими элементами структуры;
Абстрактный тип данных (АТД) — это тип данных, который предоставляет для работы с элементами этого типа определённый набор функций, а также возможность создавать элементы этого типа при помощи специальных функций. Вся внутренняя структура такого типа спрятана от разработчика программного обеспечения — в этом и заключается суть абстракции. Абстрактный тип данных определяет набор функций, независимых от конкретной реализации типа, для оперирования его значениями. Конкретные реализации АТД называются структурами данных.
Для реализации АТД в языке Си используются структуры.
Рассмотрим реализацию понятия даты с использованием struct для того, чтобы определить представление даты date и множества функций для работы с переменными этого типа:
#include <stdio.h>
struct date {
int month; // месяц
int day; // день
int year; // год
void set_date(int d, int m, int y) {
day = d; month = m; year = y; }
void print_date(void);
};
void date::print_date(void) {
printf("%d.%d.%d",day, month, year);
}
int main() {
date today;
today.set_date(2, 4, 2014);
today.print_date();
getchar();
return 0;
}