C ordening
This commit is contained in:
92
C/C(extra) ExtraAssignments/Skater/product/terminal_io.c
Normal file
92
C/C(extra) ExtraAssignments/Skater/product/terminal_io.c
Normal file
@@ -0,0 +1,92 @@
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "terminal_io.h"
|
||||
|
||||
|
||||
#define MAX_STRLEN 80
|
||||
|
||||
static const char* MenuStrings[] =
|
||||
{
|
||||
"Show Iceskaters",
|
||||
"Add Iceskater",
|
||||
"Remove Iceskater",
|
||||
"Add time",
|
||||
"Show classification",
|
||||
"Show final classification",
|
||||
"Load ...",
|
||||
"Save ...",
|
||||
"Quit"
|
||||
};
|
||||
static const size_t NrMenuStrings =
|
||||
sizeof(MenuStrings) / sizeof(MenuStrings[0]);
|
||||
|
||||
void clearScreen()
|
||||
{
|
||||
printf("\033[2J\033[1;1H");
|
||||
}
|
||||
|
||||
int getInt(const char* message)
|
||||
{
|
||||
char line[MAX_STRLEN];
|
||||
char* result = NULL;
|
||||
int value = -1;
|
||||
|
||||
printf("%s", message);
|
||||
result = fgets(line, sizeof(line), stdin);
|
||||
if (result != NULL)
|
||||
{
|
||||
sscanf(result, "%d", &value);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
int getLimitedInt(const char* message, const char* items[], int nrItems)
|
||||
{
|
||||
int choice = -1;
|
||||
do
|
||||
{
|
||||
if (items != NULL)
|
||||
{
|
||||
for (int i = 0; i < nrItems; i++)
|
||||
{
|
||||
printf(" [%d] %s\n", i, items[i]);
|
||||
}
|
||||
}
|
||||
choice = getInt(message);
|
||||
} while (choice < 0 || choice >= nrItems);
|
||||
|
||||
return choice;
|
||||
}
|
||||
|
||||
void getStr(const char* message, char* str, int maxLength)
|
||||
{
|
||||
char line[maxLength];
|
||||
char* result = NULL;
|
||||
|
||||
printf("%s", message);
|
||||
result = fgets(line, sizeof(line), stdin);
|
||||
if (result != NULL)
|
||||
{
|
||||
if (result[strlen(result) - 1] == '\n')
|
||||
{
|
||||
result[strlen(result) - 1] = '\0';
|
||||
}
|
||||
strncpy(str, result, maxLength);
|
||||
str[maxLength - 1] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
MenuOptions getMenuChoice()
|
||||
{
|
||||
printf("\n\nMENU\n====\n");
|
||||
return (MenuOptions)getLimitedInt("choice: ", MenuStrings, NrMenuStrings);
|
||||
}
|
||||
|
||||
void printProgramHeader()
|
||||
{
|
||||
printf("PRC2 opdracht 'Schaatsen'\n"
|
||||
"-------------------------");
|
||||
}
|
||||
Reference in New Issue
Block a user