#include "cqparse.h"
#include "cqtools.h"
#include <assert.h>
#include <string.h>
Funkce | |
static int | skipLine (FILE *f) |
int | readLine (FILE *f, int *nLines, char line[], int max) |
int | readLines (FILE *f, int *nLines, char *firstLine, char **lines, int maxLines) |
bool | testAnswers (char *answers) |
TErrorCode | readTest (FILE *f, TTestData *data) |
Proměnné | |
const char | C_COMM = '#' |
const char | C_STAR = '*' |
const char * | NOERR |
const char * | WARN_LONGLINE |
const char * | ERR_TITLE |
const char * | ERR_QUEST |
const char * | ERR_VAR |
const char * | ERR_VARORDER |
const char * | ERR_ANSWTIME |
const char * | ERR_EXPL |
const char * | ERR_SEP |
const char * | ERR_EOF |
const char * | ERR_ONLINE |
int readLine | ( | FILE * | f, | |
int * | nLines, | |||
char | line[], | |||
int | max | |||
) |
Naète ze souboru dal¹í nezakomentovaný øádek. Pokud narazí na konec souboru, vrací EOF. Parametr line musí ukazovat na správnì alokovanou pamì». Po pøeètení øádku bude ukazatel v souboru pøed prvním znakem dal¹ího øádku. Na konci naèteného øádku bude v¾dy znak "\n".
f | Ukazatel na popisovaè souboru. | |
nLines | Poèet pøeètených øádkù. Funkce zvý¹í toto èíslo o poèet øádkù, které naète. | |
line | Buffer, do nìj¾ se naètou data. Je nutné, aby v nìm byl alokován dostatek pamìti. Pøeètený øádek bude v¾dy konèit sekvencí "\n\0". Obsah tohoto bufferu je hlavním výsledkem volání funkce. | |
max | Rozmìr bufferu line. Musí to být minimálnì 3, aby bylo mo¾né i za øádek, který je del¹í doplnit "\n\0". |
Odkazuje se na C_COMM a skipLine().
PoužÃvá se v readLines() a readTest().
int readLines | ( | FILE * | f, | |
int * | nLines, | |||
char * | firstLine, | |||
char ** | lines, | |||
int | maxLines | |||
) |
Naète ze souboru maximálnì maxLines øádkù. Za naètenými øádky oèekává øádek zaèínající hvìzdièkou, který se naète, ale neulo¾í. Do parametru lines se ulo¾í øetìzec slepený z naètených øádkù, je¾ v nìm budou oddìleny znakem konce øádku "\n". Tato funkce alokuje pamì»!
Vrací EOF, pokud bìhem ètení narazí na konec souboru nebo první znak posledního naèteného øádku (slou¾í pro rozli¹ení jestli se naèetl øádek s hvìzdièkou nebo ne). Pokud vrátí znak *, je v¹e v poøádku, v ostatních pøípadech je nìco ¹patnì.
f | Ukazatel na popisovaè souboru. | |
nLines | Poèet pøeètených øádkù. Funkce zvý¹í toto èíslo o poèet øádkù, které naète. | |
firstLine | první naètený øádek, bude zkopírován na první místo výsledného øetìzce. | |
lines | Ukazatel na textový øetìzec. Tato funkce sama alokuje pamì», tak¾e parametr by pøi volání nemìl ukazovat na ¾ádnou alokovanou pamì». | |
maxLines | Maximální poèet øádkù, které je mo¾né naèíst. |
Odkazuje se na C_STAR, LLEN, myStrdup() a readLine().
PoužÃvá se v readTest().
TErrorCode readTest | ( | FILE * | f, | |
TTestData * | data | |||
) |
Naète data ze souboru. Vrací true, pokud v¹e probìhlo bez problémù nebo vrací false, pokud je soubor ve ¹patném formátu.
Odkazuje se na addItem(), item::answLines, C_STAR, createItem(), ERR_ANSWTIME, ERR_EOF, ERR_EXPL, ERR_QUEST, ERR_SEP, ERR_TITLE, ERR_VAR, ERR_VARORDER, error_code::errMsg, item::explLines, error_code::line, LLEN, myStrdup(), NOERR, item::questLines, readLine(), readLines(), item::rightAnswer, RLEN, testAnswers(), item::time, testdata::title a testdata::total.
PoužÃvá se v main().
static int skipLine | ( | FILE * | f | ) | [inline, static] |
Pøeskoèí øádek souboru. Pokud narazí na konec souboru, vrací EOF. Pokud je v¹e v poøádku, posledním pøeèteným znakem je '
' a pøi dal¹ím ètení znaku se tedy naète první znak dal¹ího øádku.
PoužÃvá se v readLine().
bool testAnswers | ( | char * | answers | ) |
Vrací true, pokud v¹echny varianty odpovìdí mají jako první znak malé písmeno od a do z ve správném poøadí, jinak vrací false.
PoužÃvá se v readTest().
const char C_COMM = '#' |
Znak oznaèující komentáø. V této implementaci jde o znak møí¾ka (#)
PoužÃvá se v readLine().
const char C_STAR = '*' |
Znak oznaèující oddìlovaè polo¾ek v souboru. Jde o znak hvìzdièka (*).
PoužÃvá se v readLines() a readTest().
const char* ERR_ANSWTIME |
"Chyba pøi naèítání kódu odpovìdi nebo èasové nároènosti otázky!\n"
Chyba na øádku se správnou odpovìdí a èasem.
PoužÃvá se v readTest().
const char* ERR_EOF |
const char* ERR_EXPL |
"Chybí vysvìtlení správné odpovìdi nebo zabírá pøíli¹ mnoho øádkù!\n"
Chyba nìkde v textu s vysvìtlením správné odpovìdi.
PoužÃvá se v readTest().
const char* ERR_ONLINE |
const char* ERR_QUEST |
"Chybí otázka nebo zabírá pøíli¹ mnoho øádkù!\n"
Chyba nìkde v otázce.
PoužÃvá se v readTest().
const char* ERR_SEP |
"Chybí oddìlovaè (hvìzdièka) v místì, kde byl oèekáván.\n"
Chybí oddìlovaè (hvìzdièka) v místì, kde byl oèekáván.
PoužÃvá se v readTest().
const char* ERR_TITLE |
const char* ERR_VAR |
"Chybí varianty odpovìdí nebo je jich pøíli¹ mnoho!\n"
Chyba nìkde ve variantách odpovìdí.
PoužÃvá se v readTest().
const char* ERR_VARORDER |
"Varianty odpovìdí nejsou ve správném poøadí!\n"
Chybné poøadí variant odpovìdí.
PoužÃvá se v readTest().
const char* NOERR |
"Soubor je v poøádku.\n"
Chybová hlá¹ka udávající, ¾e v¹e je v poøádku.
PoužÃvá se v main() a readTest().
const char* WARN_LONGLINE |
"V souboru se vyskytují øádky del¹í ne¾ 78 znakù!\n"
Varování, ¾e v souboru jsou pøíli¹ dlouhé øádky.
PoužÃvá se v main().
David Martinek © 2004, < martinek (zavináè) fit (teèka) vutbr (teèka) cz >