C ordening

This commit is contained in:
Rens Pastoor
2025-05-27 23:26:28 +02:00
parent 39269a71a7
commit 517087ccc1
207 changed files with 0 additions and 4278 deletions

View 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"
"-------------------------");
}