В) Блок I / O

инт фрида (void * p, int size,

инт fwrite (void * p, int size,

В блоковите входно/изходни функции броят на байтовете се определя по малко сложен начин: въвежда се терминът "блок". Това е напълно конвенционална единица, което означава всеки определен брой байтове. Програмистът трябва да посочи както "размер на блока", така и "брой блокове"; действителният брой байтове ще бъде техният продукт. Този формат е удобен при четене/запис на масив като цяло.

Резултатът от тези функции е броят на успешно прочетените/написаните блокове. Тя е равна на n или по-малко (ако е невъзможно да се прочетат/запишат n блока). Неравенството на резултата спрямо стойността на n е знак или за неуспех, или за достигане до края на файла.

Например, ако масив от цели числа се съхранява във файл и размерът му е неизвестен (известно е само, че не надвишава 10000), тогава целият масив и дължината му могат да бъдат прочетени с една команда:

n = fread (a, sizeof (int), 10000, f);

Тук се опитваме да прочетем 10 000 "блока" в масив, където всеки блок е един int; всъщност ще бъдат прочетени толкова числа, колкото са във файла, и този номер е присвоен на n.

Коментирайте. Функциите на блок I/O са трудни за прилагане към променлива тип Струна, от по тип Струна (вижте темата "Струни") текстът се съхранява отделно от самата променлива, която е само указател към този текст. Ако трябва да изпълните блок I/O на структура, съдържаща текст, препоръчително е да декларирате текстовите й полета не като Струна, но като масив char.

г) Проверете дали е достигнат краят на файла

Вместо горните методи за определяне на „невъзможността за по-нататъшно четене“, можете да използвате функцията feof ():

Връща ненулево,ако преди това е имало неуспешен опит за четене след края на файла.Така че, акоfeof () не е равно на нула, тогава е достигнат краят на файла и последната стойност, прочетена от файла, е невярна и трябва да се игнорира.

Можете също да използвате функцията filelength (), описана по-долу.

д) измиване на файловия буфер

Имайте предвид, че ако файлът не е бил затворен след запис на данните, някои от „записаните“ данни може да не бъдат запазени. Това е така, защото данните първо се записват в файлов буфер, и само след попълването му или затварянето на файла - на диск. Ако трябва, без да затваряте файла, въпреки това да се уверите, че всички I/O операции се изпълняват физически, можете да извикате функцията „изпускане буфер " файл fflush ():

Калкулатор

Безплатна услуга за оценка

  1. Попълнете заявлението. Експертите ще изчислят цената на вашата работа
  2. Изчисляването на разходите ще бъде изпратено по пощата и чрез SMS

Номер на вашето заявление

Автоматично писмо за потвърждение с информация за приложението ще бъде изпратено на пощата точно сега.