3. praktikum - Leetspeak-tõlge (itv0020)

Allikas: Lambda
Süsteemprogrammeerimine keeles C

Praktikumid

Laborid

Olete avastanud, et internetis kirjutavad osad kasutajad palju imelikumalt, kui harjunud oled. Osad tähed asendatakse numbritega ning suured ja väikesed tähed on täiesti segamini: tulemus näeb välja midagi sellist: "t3r3 h0mMiKUs7, 3i13 01i k0l3 päev". Et eelnevast aru saada, külastasid wikipeediat ja koostasid selle õudsa kirjaviisi tõlkimiseks alltoodud tabeli.

Labori eesmärk on lugeda käsurea argumente, kasutada standardsisendit, standardväljundit, standard-errorit ning faile. Lihtne!

Eeltöö

Selleks, et testprogramm korralikult töötaks paigutagem praktikumifailid kõik ühte kindlasse ja leitavasse kohta:

  • Loo kataloog CPRAK/praks3
mkdir CPRAK
cd CPRAK
mkdir prak3
cd prak3
  • Kirjuta fail Makefile, mille sisuks on:
translat0r: translat0r.c
  • Loo fail nimega translat0r.c

Programmi kirjeldus

Programmi nimi on translat0r (NB: o asemel on null).

Programmi käivitamisel on 3 võimalikku käitumist:

  • Kui programm käivitada niisama, ootab ta standardsisendist tähemärke ning väljastab tulemuse ekraanile (nagu cat, aga "tõlgituna").
  • Kui programmile anda argumendiks failinimi, väljastab ta selle ekraanile (nagu cat, aga tõlgituna).
  • Kui programmile anda argumendiks kaks faili, võtab ta info esimesest argumendist ja kirjutab teise argumendi nimelisse faili tõlgituna (üldse mitte nagu cat).

Kui käivitad "translat0r inputtest.txt outputtest.txt", loetakse inputtest.txt sisse ja tõlgitud versioon läheb faili outputtest.txt.

Tõlkimistabel

Tõlkimisel kasuta järgmist (lihtsustatud) tabelit:

Number Täht
1 l (väike L)
3 e
4 a
7 t
0 o

Lisaks peate muutma kõik segased sUuReD täHed väikesteks tähtedeks.

Kui käivitate oma programmi niisama ja kirjutate sisse "1337 m4steR 1arg0", vajutate enterit kirjutab programm välja "leet master largo".

Veateadetest

Kui näiteks failide avamisel esineb vigu, peate kirjutama mingi mõistliku veateate ning väljuma programmist nii, et tagastatav väärtus ei oleks 0 (0 tähistab, et programm oli edukas).

Testimine

Testprogramm eeldab, et paigutate oma programmi ühte konkreetsesse kataloogi ja ei oska seda mujalt otsida (t0xxxxx on teie kasutajanimi ehk teie kodukataloog):

/home/t0xxxxx/CPRAK/prak3

Testimiseks tuleb kirjutada:

/export/samba/itv0020/test3 KOOD

KOOD asemele kirjutage oma matriklinumber (t-täht pole tarvilik)

Levinud vead

Kui testimine ei õnnestu, siis kõige sagedasemad probleemid:

  • Programm küsib argumentideta käivitumisel "Sisestage tekst" vm. Seda ei pea küsima: programm lihtsalt läheb käima ja jääb ootama sisendit.
  • Programm ei reageeri EOF tulemisele klaviatuurilt (st kui vajutate CTRL+D ja saadate nii EOF-i)
  • Kui loete standardsisendist ja teie programm väljastab realõpumärgi, on see viga.