首先,我会解释说我是C的新手。我从未在一周前碰过它,但是我精通Java。我正在进行这项任务,用户将在一行中输入命令和必要的参数。
要求如下:必须正确输入命令(add,sub,mul,div,col)。必须存在与命令匹配的参数(即,add需要两个参数,但col只需要一个参数)。在命令之后输入任何内容,并从缓冲区中清除参数。
一个例子是用户将输入“add 13 12”并且总和将被打印在屏幕上。我正在努力解决的问题是数据格式错误。我需要确保用户输入“add 13 12”而不仅仅是“添加13”或“添加”。
目前,我的代码如下:
int exit = 0;
do {
//Error checking will be done here
char command[3];
int a, b;
//Input Stream
printf("Command: ");
scanf("%s", command);
if(strcmp(command, "add") == 0) {
scanf("%d ", &a);
if (!feof(stdin)) {
scanf("%d", &b);
Add(a, b);
} else {
printf("Requires second parameter\r\n");
}
} else if (strcmp(command, "sub") == 0) {
scanf("%d %d", &a, &b);
if(a > b) {
Subtract(a, b);
} else {
printf("The first integer must be greater than the second integer\r\n");
}
} else if (strcmp(command, "mul") == 0) {
scanf("%d %d", &a, &b);
Multiply(a, b);
} else if (strcmp(command, "div") == 0) {
scanf("%d %d", &a, &b);
if(b > 0 && (a > b)) {
Divide(a, b);
} else {
printf("The denominator must not be 0 or greater than the numerator\r\n");
}
} else if (strcmp(command, "col") == 0) {
scanf("%d", &a);
if (a > 0) {
Collatz(a);
} else {
printf("Integer must be one or greater\r\n");
}
} else if (strcmp(command, "bye") == 0) {
printf("bye");
exit = 1;
} else {
printf("Incorrect command, please enter add, sub, mul, div, col, or bye.\r\n");
}
} while(exit == 0);
return (EXIT_SUCCESS);