- •Void main(void)
- •Void main(void)
- •Void main()
- •Void main()
- •Viod main()
- •Условные выражения
- •Void main()
- •If(Выраженне1) Выражение2;
- •If(Выражение1) Выраженпе2; else ВыражениеЗ;
- •Void main()
- •Циклические выражения
- •Void nain()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Массивы
- •Void main()
- •Void main()
- •Void main()
- •Viod main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Адреса и указатели
- •Void main()
- •Viod main()
- •Функции
- •Void main(void)
- •Void main(void)
- •Int I; double X,step();
- •Void decart(double r, double f)
- •Void main()
- •Void decart(double r,double f,double *X,double*y)
- •Void main()
- •Void rnain()
- •Void main()
- •Void main()
- •Void main()
- •Int length;
- •Объектно-ориентированное программирование и приложения с графическим интерфейсом
- •Void main(void)
- •Int MyFunc(int, int);
- •Void NewFunc(void);
- •Void main()
- •Void FuncOut();
- •Void prob::FuncOut()
- •Void main()
- •Void main()
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Int pascal
- •Int nCmdShow)
- •Void __fastcall tForm1::Timer1Timer(tObject *Sender)
- •Void __fastcall tForm1::okClick(tObject *Sender)
- •Int I,step;
- •Введение в численные методы
Void main()
{ int i,j=10.k;
FILE *pp;
Pp=fopen(“one.dat","r");
for(i=0; i<j; i++)
{ fscanf(pp,”%d”,&k);
printf("%d\n",k); }
fclose(pp); }
В программе файл one.dat открывается для чтения. В цикле с помощью функции чтения из файла fscanf в переменную k из этого файла читается очередное число, и его значение выводится на экран. После чтения десяти чисел файл закрывается, и программа завершает работу.
Функция fscanf также похожа на функцию ввода с клавиатуры scanf. В ней на первом месте стоит указатель на файл. С оформлением форматной строки дело обстоит несколько сложнее. Прежде всего, нужно знать, что если в форматной строке стоит некий символ, то вы должны быть уверены, что текущая позиция читаемого файла содержит именно этот символ. Например, если в форматной строке стоит \n, то и в файле в этот момент находится символ перехода на новую строку. В этой связи рекомендуется, по крайней мере, на первых порах, вообще не писать в форматной строке ничего, кроме форматных выражений. Избегайте даже пробелов. Учитывая эти тонкости, разработчики системы позаботились о том, чтобы функция fscanf в какой то степени сама разбиралась с размещением записей в файле. Как бы ни размещались числа: каждое в своей строке, группами в строках, все в одной строке — вы просто пишете подряд столько форматных выражений, сколько нужно прочитать чисел (или символов). Не обращайте внимание на то, как расположены данные в файле. Можете считать, что они все записаны подряд в строчку.
Нормально сформированный файл всегда имеет последним символом признак конца файла EOF (end of file). Существует специальная функция feof, имеющая аргументом файловую переменную, которая показывает, достигнут ли конец файла. Для более ясного представления о работе функции feof представим файл в виде киноленты, которая прокручивается так, что после очередного чтения данных следующий кадр устанавливается в " файловое окно". В качестве кадра надо понимать очередной байт, записанный в файл. В самом последнем кадре файла и находится признак конца файла EOF. Если после очередного чтения из файла в "файловом окне" оказался признак конца, то при вызове функции feof она возвращает 1, иначе конец файла не достигнут, и функция возвращает 0.
Рассмотрим новую стандартную функцию int getc(FILE *f). Как видно из такого ее формального определения, функция getc возвращает целое число и имеет своим аргументом указатель на файл. Функция читает из файла очередной символ (байт) и возвращает его код (значение). Обратим внимание на то, что читается один байт, а возвращаемое значение конвертируется в тип int, занимающий два байта.
Функция int putc(int с,FILE *f) записывает в очередную позицию файла символ, код которого задан первым аргументом. Первый аргумент имеет тип int, a при записи в файл значение конвертируется в тип char. Таким образом, на месте первого параметра может находиться как код символа, так и сам символ. Функция возвращает код записанного символа, что может быть использовано в программе.
Теперь уместно, безотносительно к текущей теме - файлам, рассмотреть еще несколько полезных функций. Функция int getch(void), нам уже знакомая, читает символ, скажем так, из стандартного файла ввода/вывода. А стандартным файлом назовем консоль. Следовательно, функция вводит символ с клавиатуры. До сих пор мы пользовались этой функцией для того, чтобы сохранить открытым рабочий экран до нажатия любой клавиши. Это действительно важное приложение функции, но ее основным назначением является передача в программу символа, считываемого с клавиатуры.
Функция int putch(int с), наоборот, передает символ, заданный своим аргументом, в стандартный файл ввода/вывода. А чтобы перестать испытывать терпение читателя, то автор будет вынужден сказать по-простому: функция печатает на экран символ - свой аргумент.
В некоторых реализациях систем программирования, в частности в TURBO С, вы можете встретить модификации этих функций getchar, putchar, getche и putche. Эти разновидности описанных выше функций отличаются режимом работы, в том числе буферизацией или не буферизацией ввода. Сказав эти загадочные слова, автор этим и ограничится, отослав любопытного читателя к справочной системе TURBO C++ и к литературе.
Наряду с чтением и записью одиночных символов существуют функции чтения и записи строк, как для консоли, так и для файлов. Эти функции имеют имена gets, puts, fgets и fputs.
Функция char* gets(char* s) читает строку символов с клавиатуры (до нажатия клавиши ввода) и помещает ее в память, начиная с адреса s. При этом в качестве аргумента функции целесообразно использовать имя описанного в программе символьного массива, в который будет помещена прочитанная с консоли строка.
Функция int puts(const char* s) может иметь своим аргументом указатель на символ - имя символьного массива или непосредственно строку символов в кавычках. Строка или массив выводится на экран.
Из файла может быть прочитана или в файл может быть записана строка. Первую из этих задач выполняет функция char* fgets(char*, int, PILE* ). Она читает из файла, на который указывает последний аргумент, очередную строку, записывает ее в память по адресу, на который указывает первый аргумент. При этом читается количество символов, не превышающее значения второго аргумента, уменьшенного на единицу. В конец записанной в память строки автоматически добавляется признак конца строки \0. Сама функция, в соответствии с ее типом char*, возвращает адрес начала строки.
Следующая программа, текст которой будем считать находящимся в файле re.с, построчно читает сама себя и выводит на экран длины строк:
#include<stdio .h>
#include<string.h>