Новинарски форум

Контролно 2 за 6-та група

Re: Контролно 2 за 6-та група

от Мария Николова -
Number of replies: 0

Въпроса за крайната оценка не е от моите компетенции, съжалявам.

Грешките:

Добавка, В5 - отговорът ти е if [ $(cat somefile1) -n $(cat somefile2) ] и т.н.
Първо те питам - тества ли го?
Второ - какво правим, ако някой от двата файла е филмче от 3-4 ГБ - слагаме съдържанието му в променлива??
Трето - виж добре какво значи -n в test и как се ползва.
Четвърто, дори и да ставаше със сравняване на изхода от cat, твоя файл само от една дума ли е? Не ти ли липсва нещо, за да го подадеш на test като една дума?
Пето, поне за второто контролно по тези въпроси можеше да се прегледат командите, които сме учили и, по-специално, cmp. ;)

Добавка, Задача:
Ако някой от файловите аргументи има whitespace в името си - гърмиш. Заместване на стойност на променлива, означаваща име на файл, става чрез ограждане в кавички (напр. "$file", а не само $file) - така шелът при разделянето на думи счита това в кавичките за един token, а не за отделни.
Пишеш във файла error_log с > error_log. Така всяко писане презаписва файла и накрая в него определено няма списък с указаните имена на файлове. Правилният подход е в началото файлът да се създаде/изпразни и после да се пише с append (>> error_log).

К2, З1:
Обхождаш си аргументите от командния ред с:
for (i = 1; i <= argc; i++)
което не е правилно. Препоръчвам ти или да потърсиш повече информация за argv и argc в C, или направо да си напишеш програмка, която да ти принтира argv[0], argv[1], ..., argv[argc-1], argv[argc].
Също така, добре си се сетил, че, след като приключиш работата си с даден файл, трябва да освободиш заетия файлов дескриптор. Но после си го коментирал (на теб сме взели само половината точки за този компонент).

К2, З2:
Взели сме ти съвсем мъничко, понеже имаш малка грешка в броенето на това колко байта трябва да изпишеш.
Изписването ти е write(out, outBuff, count); което е недостатъчно като процедура. Погледни си пак какво съм ви писала за процедурата, на която сложих име full_write.