Тема: Співробітництво держав у боротьбі зі злочинністю
МП
Else
Else
Увага!!! При відкритті не забути вказати, що файл двійковий (b).
Фрагмент 2
if((fp=fopen("F.txt","r"))!=NULL)
{
while(fscanf(fp,"%d %s ",&j,str)!=EOF)
cout<<"j="<<j<<"str="<<str;
}
Помітимо, що можна було використовувати fi для двох різних файлів, тому що ми закрили перший файл, перш ніж відкрити другий. Ці дві функції одержують вказівник типуFILE у якості першого аргументу.
Функціяfscanf ( ) повертає EOF при досягненні кінця файлу. Це дозволяє перевірити досягнення кінця файлу.
Неформатований ввід/вивід.
fread(<рядок куди>,<по скільки байт>,<скільки блоків>,<вказівник на файл звідки>); повертає число прочитаних блоків або 0 у випадку помилки або кінця файлу.
fwrite(<рядок звідки>,<по скільки байт>,<скільки блоків>,<вказівник на файл звідки>); повертає число записаних блоків або 0 у випадку помилки.
Розділ вивчається тільки для при відмінній здачі попереднього матеріалу.
ДОВІЛЬНИЙ ДОСТУП: fseek( )
Функція fseek( ) дозволяє нам обробляти файл подібно масиву й безпосередньо досягати будь-якого певного байта у файлі, відкритому функцією fopen(). Помітимо, що fseek() має три аргументи й повертає значення типу int.
/' використання fseek( ) для друку вмісту файлу */
#include <stdio.h>
main()
int number;
char names[80];
{
FILE *fp;
cin>>names;
long offset = 0L; /* зверніть увагу, що це тип long */
if ((fp = fopen (names, "r")) = = 0)
printf (“ Я не можу відкрити %s.\n", names);
{
while ( fseek (fp, offset++, 0) = = 0)
putchar (getc (fp) );
fclose (fp);
}
}
Перший із трьох аргументів функціїfseek() є вказівником типуFILE на файл, у якім ведеться пошук. Файл слід відкрити, використовуючи функціюfopen( ).
Другий аргумент названий “offset” (от чому ми вибрали дане ім'я для змінної). Цей аргумент повідомляє, як далеко слід пересунутися від початкової крапки (див. нижче); він повинен мати значення типуlong, яке може бути позитивним (рух уперед) або негативним (рух назад).
Третій аргумент є кодом, що визначають початкову крапку:
Код Положення у файлі
0 початок файлу
1 поточна позиція
2 кінець файл ( у деяких системах може не передбачатися)
Функція fseek() повертає 0, якщо всі добре, і -1, якщо є помилка, наприклад спроба переміщатися за межі файлу. Тепер ми можемо роз'яснити наш маленький цикл:
while ( fseek (fp, offset+ +, 0) = = 0) putchar(getc(fp) );
Оскільки зміннаoffset ініціалізована нулем, при першім проходженні через цикл ми маємо вираз
fseek (fp, 0L, 0)
означаюче, що ми йдемо у файл, на який посилається вказівник fp, і знаходимо байт, що відстоїть на 0 байт від початку, тобто перший байт. Потім функціяputchar( ) друкує вміст цього байта. При наступнім проходженні через цикл змінна offset збільшується до1L, і друкується наступний байт. По суті, зміннаoffset діє подібно індексу для елементів файлу. Процес триває доти, покиoffset не спробує потрапити вfseek( ) після кінця файлу. У цьому випадкуfseek( ) повертає значення -1 і цикл припиняється.
Цей останній приклад чисто навчальний. Немає необхідності використовуватиfseek( ), тому щоgetc() так чи інакше проходить через файл байт за байтом;fseek() наказалаgetc() «подивитися» туди, куди вона сама вже збиралася подивитися.
/* друк в прямому й зворотному напрямках */
#include <stdio.h>
main(number, names)
char *names [ ];
{
FILE *fp;
long offset = 0L;
if ( fp = fopen(names[l], "r")) = = 0)
printf (“Я не можу відкрити %s.\n", names[l]);
{
while ( fseek(fp, offset++, 0) = = 0)
{
putchar(getc(fp));
if ( fseek(fp, -(offset + 3), 2) = = 0) putchar(getc(fp));
}
fclose(fp);
}
Застосування цієї програми до файлу, що містить ім'я «Мальволио», дає такий приємний результат: Моаилльоввоьллиаом
Наша програма друкує перший символ файлу, потім останній, потім друг, що потім передує останньому і т.д. Ми тільки додали от ці рядки в останню програму:
if (fseek(fp, - (offset + 3), 2) = = 0) putchar(getc(fp));
Код 2 в операторові припускає, що ми будемо рахувать позиції від кінця файлу. Знак мінус означає рахунок у зворотному напрямку. +3 стоїть тут тому, що ми починаємо з останнього регулярного символу файлу й пропускаємо кілька символів «новий рядок» і EOF у самому кінці файлу. (Точне значення цього коректування залежить від типу системи. Наші файли мають наприкінці по два символи нового рядка, за якими ідуть два EOF, тому ми саме їх і обходимо.)
Таким чином, ця частина програми чергує друк у зворотному напрямку й друк в прямому напрямку.
Право заробляти:
1. право володіти,
2. використовувати,
3. розпоряджатись;
Термін майнового права для різних ОІВ є неоднаковим. Наприклад майнове право на патент 20років. Після завершення МП, воно переходить у суспільне надбання. Ця складова є загальною для всіх об’єктів.
НП – для всіх ОІВ однакове і є безмежним:
1. Право на ім’я, право на псевдонім, право на анонімність.
2. Право на недоторканість.
Історики стверджують, що вперше звернули увагу у Великобританії на початку XIVст., при чому забезпечення охорони результатів розумової діяльності відповідною грамотою, ця грамота видавалась королівською владою і називалась Letters Patent. Цей документ закріпляв за автором право на деякий термін, а також позбавляла на деякий час від податків. Цей охоронний термін був 14 років і міг інколи продовжуватися. Трошки пізніше у Франції теж почали видавати такі патенти.
В XV після винайдення Гуттенбергом друкарського верстату виникла серйозні проблеми з охороною авторського права. Для усунення цієї проблеми в 1709 році англійським парламентом був прийнятий «Статут королеви Анни», який закріплював права авторів на деякий термін(історики називають це перший закон про копірайт).
Першим звернув увагу на розподіл прав на ОІВ німецькі філософи, особисто Імануіл Кант.
Різновиди ОІВ:
Розробив: викладач
кафедри права Денисенко С.І.
Суми 2012