Переписываю tabler на Си, попутно изучаю язык. Делаю по ману: http://www.firststeps.ru/linux/r.php?10
Матерится, мол, нельзя в case что-то кроме int совать.
Если нельзя, то как сделать проверку параметров?
#include <stdio.h>
#include <unistd.h>
#define DEF_OPT_NO_PARAMS -1
#define DEF_NO_PARAMS 1
#define DEF_HELP 2
#define DEF_GOOD 3
int draw_help(void)
{
printf("┏━━━━━━━━━━━━━━━━━┓\n");
printf("┃ TABLER ┠───────────────────────────────────────┐\n");
printf("┗━━┯━━━━━━━━━━━━━━┛ AVAILABLE PARAMETERS: │\n");
printf(" │ -h : This message. │\n");
printf(" │ -s=cxr : Set number of cols (c) and rows (r). │\n");
printf(" │ -f=cxr : Set number of fixed cols (c) and rows (r). │\n");
printf(" │ -c=wxh : Set cell size: width (w) and height (h). │\n");
printf(" │ -d=y/n : Use double fixed cell style? │\n");
printf(" └──────────────────────────────────────────────────────┘\n");
return 0;
}
int check_parameters(int argc, char *argv[])
{
int result = 0;
opterr = 0;
while ((result = getopt(argc, argv, "hs:f:c:d:")) != DEF_OPT_NO_PARAMS)
{
switch (result)
{
case "h" : printf("help param found"); break;
case "s" : printf("size param found %s", optarg); break;
case "f" : printf("fixed param found %s", optarg); break;
case "c" : printf("cell param found %s", optarg); break;
case "d" : printf("double param found %s", optarg); break;
case "?" : printf("WARNING, unknown parameter: %i", result);
}
}
return DEF_NO_PARAMS;
}
int draw_table(void)
{
return 0;
}
int main(int argc, char *argv[])
{
switch (check_parameters(argc, argv))
{
case DEF_NO_PARAMS : draw_help(); break;
case DEF_HELP : draw_help(); break;
case DEF_GOOD : draw_table();
}
return 0;
}