Работа с мъртва връзка

В тази статия няма да засегна случая с връзки към други сървъри (ще се справя с това като нишка следващия път) - ще изследваме само локални връзки за „въшки“. Разбира се, всеки, който се занимава с разработването на уебсайтове, държи на локалния си компютър т.нар. "огледало" - пълно копие на всички директории и файлове. Мисля, че това е много удобно както от практическа гледна точка на мързелив човек (и няма да искате да чакате да се зареди вашият проект, но все пак ще трябва да изчакате, независимо колко умна е връзката, но от вашият компютър все още е много по-бърз) и от гледна точка на удобството за актуализиране на сайта: смених всичко вкъщи и след това го "качих" на сървъра. Така че нека дефинираме: от какво се нуждаем?

И така, ние регистрираме включените файлове:

Всеки, който е използвал конзолата, е наясно, че параметрите могат да се предават на програмата, когато тя се стартира, като ги записва разделени с интервал след името на програмата. По принцип това важи не само за конзолните приложения, но там се проявява най-ясно (както се казва, цъфти и мирише).

Вероятно всички са писали в свойствата на прекия път за Quake 3Arena, за да заредят конфигурацията си, когато зареждат играчката. И така, сега ще направим нещо подобно. А именно, ще получим името на анализирания файл в началото на програмата. Ще направим това, като използваме параметри, които се предават на основната функция:

Както вероятно вече сте разбрали, в argv ще имаме текст, който потребителят въвежда след името на програмата в конзолата. Да се ​​надяваме, че това е името на съществуващ файл и след това ще проверим само наличието на този един от нашите параметри (програмата е написана сама за себе си, но ако някой реши да я продаде, нека сам напише тази проверка - ние имам друга задача с теб:-)).

Първо, нека да опишем променливите:

Трябва да се използва в цикли като брояч, len1, len2, len3 ще се използва за съхраняване на дължините на низовете. Под това задаваме имената на файловете, в които ще съхраняваме както междинни данни за анализ, така и самия ни отчет. dir [] - запазване на връзки с напред (/) наклонени черти (тъй като те са написани в HTML тагове), готови [] - тук запазваме връзки с вече коригирани наклонени черти (т.е./промяна на \ - според мен, всичко това в отделни файлове - по-опростен и прозрачен начин на работа от съхраняването в динамично разпределени масиви и освен това ви позволява да контролирате работата), webot [] - тук записваме отчета. След това описваме указателите към нашите файлове. Мисля, че няма нужда от обяснение кой указател ще отговаря за кой файл. След това описва указатели, които просто се използват за съхраняване на междинни стойности. Масивът pathbuf ще е необходим като място за съхранение на пътя към работното пространство на програмата.

И така, получаваме пътя до мястото на работа (вторият параметър в getcwd задава размера на буфера) и проверяваме за наличие на входен параметър - името на анализирания файл:

Функцията търси реда File_analizator.exe във входния параметър argv - това е името (за определеност) на нашето въображение. Ако намери този ред, се показва съобщение за грешка и програмата излиза. И така, подготвителните дейности приключиха, сега започваме действително да работим.

Първо, трябва да отворите анализирания файл:

В същото време отваряме файла за съхраняване на намерените връзки с флага "w", което означава, че ако този файл не съществува (и не съществува:-)), тогава той ще бъде създаден и отворен за писане . Файлът, който се анализира (указател index_f), се отваря само за четене.