Дундаж хэлбэлзлийн томъёо. Санамсаргүй хэмжигдэхүүний хүлээлт ба дисперс

Бидний өнөөг хүртэл авч үзсэн жишээнүүд нь файлд мэдээлэл оруулах/гаралтыг форматтай харуулсан. Форматлагдсан файлын оролт/гаралтыг зөвхөн хэмжээ, тоо хэмжээ бага байх үед, түүнчлэн програмын бус хэрэгслээр файлуудыг үзэх боломжийг хангах шаардлагатай үед ашиглахыг зөвлөж байна. Үгүй бол мэдээжийн хэрэг тэмдэгтийн мөр гэхээсээ илүүтэй компьютерийн OP-д байгаа тоонуудыг хадгалдаг хоёртын I/O-г ашиглах нь хамаагүй илүү үр дүнтэй. Бүхэл тоо (int) эсвэл бодит (хөвөгч) утга санах ойд 4 байт, давхар утга нь 8 байт, мөн бэлгэдлийн утга char гэж бичнэ үү- 1 байт. Жишээлбэл, текст (форматлагдсан) файл дахь 12345 тоо 5 байт, хоёртын файлд 4 байт байна.

Хоёртын файлууд, өөрөөр хэлбэл мэдээлэл хадгалагдсан файлууд дотоод хэлбэрдүрслэлийг програм хангамжийн дараагийн хэрэглээнд ашигладаг бөгөөд програм хангамжийн бус байдлаар үзэх боломжгүй. Хоёртын файлын давуу тал нь нэгдүгээрт, унших/бичих үед өгөгдлийг бэлгэдлийн хэлбэрээс дотоод хэлбэр рүү болон эсрэгээр хөрвүүлэхэд цаг хугацаа алдахгүй, хоёрдугаарт, нарийвчлал алдагддаггүй. бодит тоо. Форматлагдсан оролт/гаралтын хувьд ч, хоёртын оролт/гаралтын хувьд ч файлын мэдээллийг "зөв" боловсруулахын тулд хоёртын системд ямар төрлийн өгөгдөл, хэрхэн, ямар дарааллаар бичигдсэнийг мэдэх шаардлагатай. файл, ялангуяа текст засварлагч ашиглан хоёртын файлыг үзэх нь юу ч хийхгүй.

Динамик массивын бүхэл тоон элементүүдийг хоёртын файлд бичиж, энэ файлаас уншиж байгааг харуулсан жишээг авч үзье.

#оруулна

#оруулна

#оруулна

namespace std ашиглах;

cout<< "Vvedite kol-vo elementov celochisl. massiva: "; cin >> N;

int *mas = new int [N];

for(i=0; i

cout<< " Vvedite " << i << "-i element: "; cin >> mas[i];

cout<< "\nIdet zapis dannyh v fail..." << endl;

ofstream fout("c:\\os\\bin.dat", ios::binary);// үүсгэсэн гарах хоёртын урсгал

if(!fout) ( cout<< "\n Oshibka otkrytiya faila!"; getch(); return 1; }

fout.write(дахин тайлбарлах (мас), N*sizeof(int));//файл руу массив бичих

fout.close();// урсгалыг хааж байна

cout<< "Dannye uspeshno zapisany!" << endl;

for(i=0; i

ifstream fin("c:\\os\\bin.dat", ios::binary); //файлыг унших утас үүсгэнэ

if(!fin) ( cout<< "\n Oshibka otkrytiya faila!"; getch(); return 1; }

cout<< "Fail sodergit:" << endl;

fin.унших(дахин тайлбарлах (мас), N*sizeof(int));//файлаас массив унших

for(i=0; i

getch(); буцаах 0;

Энэ программ дээр write() (ofstream ангийн арга) болон read() (ifstream ангийн арга) функцуудыг ашиглахад онцгой анхаарал хандуулах хэрэгтэй. Эдгээр функцууд нь өгөгдлийг байтаар тооцдог бөгөөд өгөгдлийн буферээс тодорхой тооны байтыг файл руу шилжүүлж, буцааж өгөх зориулалттай. Эдгээр функцүүдийн параметрүүд нь буфер хаяг ба түүний уртыг байтаар илэрхийлдэг.

write() функц нь файлд эхний параметрт заасан байтаас хоёр дахь параметрт заасан байтыг бичих зориулалттай. хаягуудөгөгдлийн буфер ба read() функц нь файлаас өгөгдлийг унших зориулалттай. Эдгээр функцууд нь зөвхөн char төрлийн өгөгдлийн буфертэй ажилладаг гэдгийг энд тэмдэглэх нь зүйтэй. Үүнтэй холбогдуулан бид энэ программд операторыг ашигласан дахин тайлбарлах<> Энэ нь бидний int (mas) төрлийн өгөгдлийн буферийг char төрлийн буфер болгон хувиргадаг.

Энэ нь оператор ашиглан цутгах гэдгийг санах нь чухал юмдахин тайлбарлах функцүүдийн эхний параметр байгаа тохиолдолд л шаардлагатайбичих() Тэгээдунших() тэмдэгтийн массив биш (эцсийн эцэст, төрлийн тэмдэгттэмдэгт зөвхөн 1 байт авдаг).Нэмж дурдахад, хэрэв та массив биш, харин хувьсагчдыг бичих эсвэл унших шаардлагатай бол лавлах механизм (өгөгдлийн буферийн хаяг руу холбох холбоос) ашиглах хэрэгтэй, жишээлбэл:

ofstream fout(файлын нэр, ios::app | ios::binary);

fout.write(дахин тайлбарлах (& cb), sizeof(хөвөгч));

Одоо авч үзэж буй функцүүдийн хоёр дахь параметрийг хэлэлцэх шаардлагатай байна. Энэ програмд ​​​​хоёрдахь параметр болгон бид N*sizeof(int) илэрхийллийг ашигласан бөгөөд үүгээр бид байтуудын тоог тооцоолсон. Жишээлбэл, хэрэв бид 5 бүхэл массив элементтэй бол байтны тоо 20 болно. sizeof() функц нь параметр болгон заасан өгөгдлийн төрөлд хуваарилагдсан байтуудын тоог буцаана. Жишээ нь, sizeof( int) 4 буцаж ирнэ.

Тэгэхээр энэ жишээнд өгсөн програм нь bin.dat файл руу өгөгдлийг хоёртын хэлбэрээр бичиж, энэ хоёртын файлаас унших боломжийг олгоно. Түүнчлэн уншсаны дараа энэ өгөгдлийг int төрөлд хөрвүүлж, массивын бүтцийг олж авах бөгөөд түүгээр ямар ч үйлдлийг гүйцэтгэх боломжтой болно.

Одоо та bin.dat файлаас өгөгдлийг унших боломжтой программ бичих хэрэгтэй гэж төсөөлөөд үз дээ, бид зөвхөн энэ файлд хоёртын хэлбэрээр бүхэл тооны массивын элементүүдийг агуулж байгааг л мэднэ. Бичсэн элементүүдийн тоо (Н ) бид мэдэхгүй. Програм үүсгэх үед бид тогтмол массив ашиглах эрхгүй, i.e. Програм үүсгэх үе шатанд санах ойг хуваарилах. Энэ нь алдаатай үр дүнд хүргэнэ. Учир нь N-ийн хэт бага утга нь массивын бүх элементүүдийг тоолохгүй, харин N-ийн хэт том утга нь нэмэлт нүднүүдийг санамсаргүй утгуудаар дүүргэхэд хүргэдэг.

Санах ойг динамикаар хуваарилах замаар бүхэл тоон массивын элементүүдийг хоёртын файлаас унших, уншсан өгөгдлийн бодит байдлыг батлах, тэдгээрийн нийлбэрийг тооцоолох програмын жишээг авч үзье.

#оруулна

#оруулна

#оруулна

namespace std ашиглах;

int N, i, нийлбэр=0, dfb; //dfb - файлын уртыг байтаар илэрхийлнэ

ifstream fin("c:\\os\\bin.dat", ios :: хоёртын);

if(!fin) ( cout<< "Oshibka otkrytiya faila!"; getch(); return 1; }

fin.seekg(0, ios::төгсгөл);//унших байрлалыг файлын төгсгөлд тохируулах (эцэсээс 0 байт)

dfb = fin.tellg();//файлын байрлалын төгсгөлийн утгыг авах (байтаар)

N=dfb/4;//бүхэл тоо 4 байт эзэлдэгийг мэдээд тооны тоог тооцоол

int *arr = new int [N];//динамик массив үүсгэх

fin.seekg(0, ios::beg);//өгөгдлийг уншихын өмнө одоогийн байрлалыг файлын эхэнд шилжүүлнэ

fin.унших(дахин тайлбарлах (arr), dfb);

cout<< "Iz faila schitano " << N << " elementov:" << endl;

for(i=0; i

for(i=0; i

cout<< "\n Ih summa = " << sum;

getch(); буцаах 0;

ifstream ангийн аргууд болох seekg() болон tellg() функцуудыг идэвхтэй ашигласан энэ программыг нарийвчлан авч үзье. Үүнийг энд тэмдэглэх нь зүйтэй Аливаа файл нээгдэх үед одоогийн унших эсвэл бичих байрлалтай холбоотой байдаг. Файлыг уншихаар нээх үед энэ үндсэн байрлалыг файлын эхэнд тохируулна. Гэхдээ файлын дурын газраас эхлэн уншиж, бичиж чаддаг байхын тулд байрлалыг гараар хянах шаардлагатай байдаг. seekg() болон tellg() функцууд нь одоогийн унших заагчийг тохируулах, шалгах боломжийг олгодог бол seekp() болон tellp() функцууд бичих заагчийг ижилхэн гүйцэтгэдэг.

seekg(1_параметр, 2_параметр) арга нь файлаас одоогийн унших байрлалыг 2-р_параметрт заасан байршилтай харьцуулахад 1_параметрт заасан байтуудын тоогоор шилжүүлдэг. 2_параметр нь гурван утгын аль нэгийг авч болно:

ios::beg – файлын эхнээс;

ios::cur – одоогийн байрлалаас;

ios::end – файлын төгсгөлөөс.

Энд beg, cur, end нь ios ангид тодорхойлогдсон тогтмолууд бөгөөд :: тэмдэг нь энэ ангид хандах үйлдлийг илэрхийлдэг. Жишээлбэл, оператор fin.seekg(-10, ios::төгсгөл);нь файл дуусахаас 10 байт хүртэл файлаас одоогийн унших байрлалыг тохируулах боломжийг танд олгоно.

Одоо програмын үйл ажиллагааны тайлбар руу буцъя. Бид файлд бичигдсэн тооны тоог мэдэхгүй байгаа тул эхлээд тооны тоог олж мэдэх хэрэгтэй. Үүнийг хийхийн тулд ашиглана уу fin.seekg(0, ios::төгсгөл);бид файлын төгсгөл рүү шилжиж, tellg() функцийг ашиглан файлын уртыг байтаар dfb хувьсагч руу буцаана. tellg() функц нь одоогийн заагчийн байрлалыг байтаар буцаана. Бид нэг бүхэл тооны уртыг байтаар (4 байт) мэддэг тул файлын уртыг байтаар ( N=dfb/4;). Тоонуудын тоог олж мэдээд бид динамик массив үүсгэж, read() функцийг ашиглан өгөгдлийг уншиж эхлэхийн тулд файлын эхэнд шилждэг. Заасан тооны өгөгдлийн байтыг (dfb) өгөгдлийн буфер (arr) руу шилжүүлсний дараа ийм байдлаар уншсан өгөгдөл нь массив бүтцийг олж авч, аливаа кодын үйлдэл, хувиргалтанд бүрэн тохирох болно.

Дээрх жишээнд "хамгийн урт" сонголт нь "b" юм: 23 байт (мөрт 21 байт, бүхэл тоо 2 байт) шаардлагатай. "n" ба "m" сонголтууд нь тус бүр 4 ба 5 байт шаарддаг (хүснэгтийг үз).

нэр, нийтлэгчийн зүйл Хувилбарын хэсэг

Хоёртын файлууд

Хоёртын файлууд нь мэдээллийг компьютерийн санах ойд байгаа хэлбэрээр хадгалдаг тул хүмүүст тохиромжгүй байдаг. Ийм файлыг харахад дотор нь юу бичигдсэнийг ойлгох боломжгүй юм; үүнийг гараар үүсгэх эсвэл засах боломжгүй - зарим текст засварлагч гэх мэт. Гэсэн хэдий ч эдгээр бүх таагүй байдлыг өгөгдөлтэй ажиллах хурдаар нөхдөг.

Түүнчлэн текст файлуудыг дараалсан хандалтын бүтэц гэж ангилдаг бол хоёртын файлыг шууд хандалтын бүтэц гэж ангилдаг. Энэ нь та хоёртын файлын одоогийн элементээс гадна хүссэн үедээ хэнд ч хандах боломжтой гэсэн үг юм.

Бичсэн файлууд

Бүтэцлэгдсэн өгөгдлийн төрлийн хувьсагчдыг (мөртөөс бусад) текст файлаас унших боломжгүй. Жишээлбэл, хэрэв та тоглоомын бүртгэлийг худалдаанд гаргах боломжтой тоглоомуудын талаарх мэдээллээр (бүтээгдэхүүний нэр, бүтээгдэхүүний үнэ, тоглоомыг ашиглах насны ангилал) бөглөхийн тулд текст файлаас өгөгдөл оруулах шаардлагатай бол:

нас: 0..18 багц; (файлд хил хязгаараар заасан)

Дараа нь та дараах кодыг бичих хэрэгтэй болно.

c: тэмдэгт; i,j,min,max: бүхэл тоо;

а: тоглоомын багц;

оноож эхлэх (f, оролт); дахин тохируулах(f);

i:=1-ээс 100 хүртэл хийх бол eof(f)

дараа нь [i] хийх

эхлэх readln(f,нэр,үнэ,мин,макс); нас:=;

j for j:= min to max do age:= нас+[j];

Таны харж байгаагаар ийм элемент тус бүрийг унших нь маш тохиромжгүй бөгөөд хөдөлмөр их шаарддаг.

Энэ байдлаас гарах арга замыг санал болгож байна бичсэн файлууд- тэдгээрийн элементүүд нь ямар ч үндсэн эсвэл бүтэцлэгдсэн өгөгдлийн төрөлд хамаарах боломжтой. Цорын ганц хязгаарлалт бол бүх элементүүд ижил төрлийн байх ёстой. Энэ нь тодорхой таагүй байдал юм

Хоёртын файлын элементүүдэд шууд хандалтыг зохион байгуулах зайлшгүй нөхцөл: массивын хувьд бүтцийн бүрэлдэхүүн хэсэг бүрийн уртыг яг тодорхой мэддэг бол аливаа бүрэлдэхүүн хэсгийн хаягийг маш энгийн томъёогоор тооцоолж болно.

<начало_структуры> + <номер_компонента>*<длина_компонента>

Бичсэн файлуудын тайлбар

Var хэсэгт ажиллахад зориулагдсан файлын хувьсагчууд байдаг бичсэн файлууд, дараах байдлаар тайлбарлав.

var<файловая_перем>: файлын<тип_элементов_файла>;

Ямар ч файлын хувьсагчийг тогтмол гэж зааж өгөх боломжгүй.

Бичсэн файлын зорилго

Одооноос эхлэн хэсгийн төгсгөл хүртэл "файл" гэсэн үгээр бид " хоёртын файл" (Мэдээжийн хэрэг, өөрөөр заагаагүй бол).

Баг оноох(f,"<имя_файла>"); файлын хувьсагчf болон энэ хувьсагч ажиллах үүрэгтэй файлын нэр хоёрын хооронд холболт тогтооход үйлчилдэг.

Шугам "<имя_файла>" файлын бүрэн замыг агуулж болно. Хэрэв замыг заагаагүй бол файл нь програмын гүйцэтгэх модультай нэг директорт байрласан гэж үзнэ.

Бичсэн файлыг нээх, хаах

Таны програм нээгдэж байгаа файлтай ямар үйлдэл хийхээс хамаарч үүнийг хоёр аргаар нээж болно.

дахин тохируулах(f); - файлыг нээх, үүнээс мэдээлэл уншиж, үүн дээр бичих (хэрэв ийм файл байхгүй бол түүнийг нээх оролдлого нь алдаа гаргах болно). Файлын эхэнд заагчийг буцаахад ижил тушаалыг ашиглана;

дахин бичих(f); - мэдээлэл бичихийн тулд файл нээх; хэрэв ийм файл байхгүй бол түүнийг үүсгэх болно; хэрэв ижил нэртэй файл байгаа бол өмнө нь агуулагдсан бүх мэдээлэл алга болно.

Хаагдаж байна бичсэн файлуудпроцедур хаах(f) , бүх төрлийн файлд нийтлэг байдаг.

Бичсэн файлаас уншиж байна

Уншихад нээлттэй файлаас унших нь read() командыг ашиглан хийгддэг. Хаалтанд эхлээд файлын хувьсагчийн нэр, дараа нь оролтын жагсаалт1) :

Та зөвхөн файлаас мэдүүлэгт тохирох төрлийн хувьсагчдыг оруулах боломжтой, гэхдээ энэ өгөгдлийн төрлийг бас бүтэцтэй болгож болно. Хэрэв бид догол мөрний эхэнд өгсөн жишээ рүү буцаж орвол гэж хэлье. Бичсэн файлууд", дараа нь ашиглах нь тодорхой болно бичсэн файлтекстийн оронд энэ нь програмын текстийг мэдэгдэхүйц багасгах болно:

төрөл тоглоом = бичлэгийн нэр: мөр; үнэ: бодит;

нас: 0..18 багц; (хил хязгаараар тодорхойлогддог)

var f: тоглоомын файл;

а: тоглоомын багц; Эхлэх

оноох (f, оролт);

i:=1-ээс 100 хүртэл хийх

хэрэв eof(f) биш бол уншина уу(f,a[i]); хаах(f);

Бичсэн файлаас хайх

Бидэнд аль хэдийн танил болсон eof(f:file):boolean функц нь файлын төгсгөлд хүрсэн тухай мэдээлдэг. Текст файлд хамаарах бусад бүх "хайлтын төгсгөл" функцийг (eoln(), seekeof() болон seekeoln()) бичсэн файлд хэрэглэх боломжгүй.

Гэхдээ танд ажиллах боломжийг олгодог тусгай дэд програмууд байдаг бичсэн файлуудшууд хандалтын бүтэцтэй адил:

1. filepos(f:file):longint функц нь файл дахь заагчийн одоогийн байрлалыг мэдээлэх болно. Хэрэв энэ нь N элемент агуулсан файлын төгсгөлийг зааж байвал энэ функц нь N үр дүнг буцаана. Үүнийг тайлбарлахад хялбар: файлын элементүүдийг тэгээс эхлэн дугаарласан тул сүүлчийн элементийг N-1 гэж дугаарласан. Тиймээс N тоо нь "байхгүй" элементэд хамаарах бөгөөд энэ нь файлын төгсгөлийн тэмдэг юм.

2. Filesize(f:file):longint функц нь f файлын уртыг тооцоолно.

3. seek(f:file,n:longint) процедур нь f файлын заагчийг N бичлэгийн дугаарын эхэнд шилжүүлнэ. Хэрэв n нь файлын бодит уртаас их байвал заагчийг файлын бодит төгсгөлөөс цааш зөөнө.

4. truncate(f:file) процедур нь файлын "сүүл"-ийг тайрах болно: одоогийнхоос файлын төгсгөл хүртэлх бүх элементүүд үүнээс хасагдана. Үнэн хэрэгтээ зөвхөн "файлын төгсгөл" тэмдгийг заагч заасан газар дахин бичих бөгөөд физикийн хувьд "таслагдсан" утгууд нь анхны байрандаа үлдэх болно - тэд зүгээр л "өнчин" болно.

Бичсэн файл руу бичих

Та write() командыг ашиглан бичихэд нээлттэй файлд хувьсагчдыг хадгалах боломжтой. Уншихтай адил эхлээд файлын хувьсагч, дараа нь гаралтын жагсаалт гарч ирнэ.

бичих(f,a,b,c); - f файлд (өмнө нь rewrite (f) эсвэл reset (f) командуудаар бичихээр нээгдсэн) a , b , c хувьсагчдыг бичнэ.

Гаралт руу бичсэн файлЗөвхөн өгөгдлийн төрлийн тайлбарт тохирох хувьсагчдыг зөвшөөрнө. Нэргүй болон төрөлгүй тогтмолуудыг хэвлэх боломжгүй

бичсэн файл.

Бичсэн файлуудшууд болон дараалсан хандалтын бүтэц гэж үздэг. Энэ нь зөвхөн файлын төгсгөлд төдийгүй бусад аль ч элемент дээр бичих боломжтой гэсэн үг юм. Бичсэн утга нь энэ элементийн өмнөх утгыг орлуулах болно (хуучин утгыг "дарж бичих" болно).

Жишээлбэл, хэрэв та файлын тав дахь элементийг a хувьсагчд хадгалагдсан утгаар солих шаардлагатай бол дараах програмын хэсгийг бичнэ.

хайх(f,5); (заагчийг 5-р элементийн эхэнд тавих болно)

бичих(f,a); (заагчийг 6-р элементийн эхэнд тавих болно)

Олон хүмүүс хоёртын файлыг хэрхэн нээх талаар асуулт асуудаг. Энэ баримт бичиг нь хувийн компьютер дээр байрладаг аливаа файл юм. Компьютер болон түүнтэй холбоотой зөөвөрлөгч дээр байрладаг бүх өгөгдлийг ихэвчлэн битээр тэмдэглэдэг. Энэ үгнээс л нэр гарч иржээ. Хэрэв та энгийн текст файлыг харьцуулалт болгон ашигладаг бол уншихад ямар ч асуудал гарахгүй. Үүнийг хийхийн тулд компьютер дээрээ ердийн редактор байхад л хангалттай. Хоёртын файлыг нээхийн тулд та энгийн тэмдэглэлийн дэвтэр ашиглах боломжгүй болно. Хэрэв бид текст файл дахь мэдээлэл ижил битээр шифрлэгдсэн тухай ярих юм бол ихэвчлэн хоёртын файлуудыг унших тухай ярихдаа гүйцэтгэх боломжтой баримт бичгүүдийг хэлдэг.

Үйл ажиллагааны заавар

Эхлээд та хувийн компьютерийнхээ хатуу диск дээр хоёртын файлд зориулсан энгийн засварлагч HexEditor программ хангамжийг суулгах хэрэгтэй. Суулгасны дараа програмыг дүрс дээр давхар товшоод нээх хэрэгтэй. Энэ хэрэгсэл нь хоёртын файлыг бодит горимд унших боломжийг танд олгоно. Энэ тохиолдолд та файл дахь өгөгдлийг өөрчлөх, өөрийн мэдээллээ нэмэх гэх мэт боломжтой. Энэ засварлагч дээр ажиллах, хоёртын файлыг өөрчлөхийн тулд та энэ үйл ажиллагааны чиглэлээр дор хаяж тодорхой мэдлэгтэй байх ёстой.

Хоёрдугаарт, та түүний үндсэн цонхтой танилцах хэрэгтэй бөгөөд энэ нь ердийн редакторын цонхноос тийм ч их ялгаатай биш юм. Ижил товчлуурууд, ижил цэс, баримт бичгийн үндсэн хэсэг, хавчуурга, статусын талбарууд. Та сонирхсон файлаа Файл таб эсвэл програм дээр байрлах тусгай товчлуураар нээж болно. Үүний дараа та тоо, үсэг хэлбэрээр гарч ирэх гүйцэтгэх файлыг харах боломжтой болно. Хоёртын файлыг дүрсэлсэн тэмдэгт болон ердийн редакторт байгаа тэмдэгтүүдийг андуурч болохгүй. Баримт бичгийн аль нэг хэсгийг устгах, өөрчлөх шийдвэр гаргавал зарим хэсэг нь алга болно, өөрчлөгдөнө гэж ойлгох хэрэгтэй.

Гуравдугаарт, програмыг ашиглан та баримт бичгийн аль ч хэсгийг өөрчлөхийг оролдож болно. Өмнө дурьдсанчлан, програм хангамжийн хэрэгсэл нь файлыг танд хэрэгтэй баримт бичгийн хэсгийг олох арга замыг сайжруулдаг байдлаар харуулдаг. Нэмж дурдахад програм нь тохиргоонд нэлээд уян хатан байдаг. Үүний тусламжтайгаар та хоёртын файлтай хоёртын кодын график дэлгэцийг өөрчлөх боломжтой. Хэрэв файлын зарим хэсэгт буруу өгөгдөл оруулсан бол энэ нь дараа нь бүрэн ажиллахаа болих эсвэл бүрэн буруу ажиллаж эхлэх боломжтой. Ямар ч тохиолдолд ийм өгөгдлийг оруулах нь үйлдлийн систем болон хувийн компьютерт шууд өөрчлөлт оруулах болно.

Дөрөвдүгээрт, файл дахь тодорхой өгөгдлийг өөрчлөх, устгах, нэмсний дараа та ажлынхаа үр дүнг хадгалах хэрэгтэй. Хэрэв танд файл засварлах хангалттай туршлага байхгүй бол тийм ч таатай бус үр дагаварт бэлэн байх хэрэгтэй. Жишээлбэл, өгөгдөл өөрчлөгдсөний дараа баримт бичиг ажиллахаа болино. Та энэ асуудлыг сайн ойлгож эхлэх хүртэл файлын олон хуулбар гэмтэх болно. Хэрэв та өөрийн чадвардаа итгэлгүй байгаа бол, ялангуяа su хоёртын файлыг засах шаардлагатай тохиолдолд өгөгдлийг өөрөө өөрчлөх ёсгүй.



Танд нийтлэл таалагдсан уу? Найзуудтайгаа хуваалцаарай!