编写一段程序,使用c语言main函数的两个参数int argc, char *argv[] 接收命令行传参,解析传入的参数,分析出对应的操作命令。
时间: 2024-12-16 09:22:52 浏览: 15
在C语言中,`main` 函数的`argc`参数表示命令行参数的数量,而`char *argv[]`是一个数组,存储了所有的命令行参数,每个元素代表一个单独的参数,包括第一个进程名。下面是一个简单的示例,用于接收命令行参数并分析操作命令:
```c
#include <stdio.h>
#include <stdlib.h>
// 假设我们有三个操作命令:"add", "subtract", 和 "help"
enum Command {
ADD = 0,
SUBTRACT,
HELP,
MAX_COMMANDS
};
void processCommand(int command) {
switch (command) {
case ADD:
printf("Adding two numbers...\n");
break;
case SUBTRACT:
printf("Subtracting two numbers...\n");
break;
case HELP:
printf("Usage: program_name [add|subtract] number1 number2\n");
break;
default:
printf("Invalid command! Use 'help' for more information.\n");
break;
}
}
int main(int argc, char *argv[]) {
if (argc < 2 || strcmp(argv[1], "help") == 0) {
// 如果只有一个参数或者参数是 "help",则显示帮助信息
processCommand(HELP);
} else if (strcmp(argv[1], "add") == 0) {
// 如果第一个参数是 "add",需要两个数字作为后续参数
if (argc != 4) {
fprintf(stderr, "Error: Incorrect usage for 'add'. Expecting two numbers.\n");
return 1;
}
int num1 = atoi(argv[2]);
int num2 = atoi(argv[3]);
processCommand(ADD); // 这里只是打印提示,实际处理可以替换
printf("Result: %d + %d = %d\n", num1, num2, num1 + num2);
} else if (strcmp(argv[1], "subtract") == 0) {
// 同理,检查 "subtract" 是否有两个数字参数
if (argc != 4) {
fprintf(stderr, "Error: Incorrect usage for 'subtract'. Expecting two numbers.\n");
return 1;
}
num1 = atoi(argv[2]);
num2 = atoi(argv[3]);
processCommand(SUBTRACT); // 提示或实际处理
printf("Result: %d - %d = %d\n", num1, num2, num1 - num2);
} else {
printf("Unknown command: '%s'\n", argv[1]);
return 1;
}
return 0;
}
```
在这个例子中,如果用户输入 "program_name add 5 3",程序会解析到 "add" 命令,并将后面的 "5" 和 "3" 转换为整数进行加法运算。对于其他未知的命令,如 "program_name not-a-command",程序会给出错误提示。
阅读全文