-
Notifications
You must be signed in to change notification settings - Fork 0
/
record.c
48 lines (42 loc) · 1.4 KB
/
record.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "record.h"
#include "scoreboard.h"
#include "settings.h"
#include "fatal.h"
#include <ncurses.h>
#include <stdio.h>
#include <string.h>
Record CreateRecord(char *name)
{
Record new_record;
if ((new_record = (Record) malloc(sizeof(struct _record))) == NULL)
FatalError("Out of space!");
strncpy(new_record->name, name, NAME_MAX_LENGTH + 1);
new_record->score = 0;
return new_record;
}
void ShowRecord(Record r, unsigned int number, int y, int x)
{
char sNum[NUM_MAX_LENGTH + 1];
snprintf(sNum, NUM_MAX_LENGTH + 1, "%u", number);
mvaddnstr(y, x, " ", NUM_MAX_LENGTH + 1);
mvaddnstr(y, x, sNum, NUM_MAX_LENGTH + 1);
mvaddnstr(y, x + NUM_MAX_LENGTH + 1, " ", NAME_MAX_LENGTH + 1);
mvaddnstr(y, x + NUM_MAX_LENGTH + 1, r->name, NAME_MAX_LENGTH + 1); // +1?
char sScore[SCORE_MAX_LENGTH + 1];
snprintf(sScore, SCORE_MAX_LENGTH + 1, "%u", r->score);
mvaddnstr(y, x + NUM_MAX_LENGTH + NAME_MAX_LENGTH + 2, " ", SCORE_MAX_LENGTH + 1);
mvaddnstr(y, x + NUM_MAX_LENGTH + NAME_MAX_LENGTH + 2, sScore, SCORE_MAX_LENGTH + 1);
}
int ReadRecord(Record r, FILE *fp)
{
return (fp == NULL) ? EOF : fscanf(fp, "%s %u", r->name, &r->score);
}
int FindRecord(Record rs[], int num, char name[])
{
for (int i = 0; i < num; i++)
{
if (strcmp(rs[i]->name, name) == 0)
return i;
}
return -1;
}