, , char string (char *).
, char switch == !=, strcmp strncmp
, - char :
char command;
int a1;
int a2;
int res;
printf("Entar a command for calcualation: ");
scanf("%d %c %d", &a1, &command, &a2);
switch (command)
{
case '+': res = a1 + a2;
break;
case '-': res = a1 - a2;
break;
case '*': res = a1 * a2;
break;
default: res = 0;
}
printf("Result is %d\n", res);
, :
char commands[][20] = {"copy", "del", "compare", "clear",""};
char command[20];
char arg1[20];
char arg2[20];
printf("> ");
scanf("%s", command);
int commandID = 0;
while (commands[commandID][0] != '\0')
{
if (!strcmp(commands[commandID], command))
break;
commandID++;
}
if (commands[commandID][0] != '\0')
printf("command ID is %d\n", commandID);
else
printf("command is invalid\n");
, , ID - :
enum COM_ID{C_COPY, C_DEL, C_COMPARE, C_CLEAR, C_ERR};
char commands[][20] = {"copy", "del", "compare", "clear",""};
commandID switch, :
switch (commandID)
{
case C_COPY:
ask2args(arg1, arg2);
copy(arg1, arg2);
break;
case C_DEL:
ask1arg(arg1);
del(arg1);
break;
case C_COMPARE:
ask2args(arg1, arg2);
compare(arg1, arg2);
break;
case C_CLEAR:
clear();
break;
}
, , . , , .
,
void(*fucs[4]) (const char * a1, const char * a2);
fucs[commandID](arg1, arg2);