在 C 语言中,main
函数的参数argc
和argv
用于接收命令行传入的参数
main
函数的两个参数
int main(int argc, char* argv[])
假设顾客通过手机 APP 点餐,订单信息会被传递给餐厅的处理系统(也就是你的程序)。
订单信息结构
argc
:订单中的信息项总数。argv
:订单中的具体信息内容,是一个字符串数组。
例如,顾客发送了这样一个订单:
./程序名 红烧肉.txt 微辣
对应的 argv
数组内容为:
argv[0] = "./程序名" // 程序名称(固定存在)
argv[1] = "红烧肉.txt" // 第一个参数:顾客要点的菜(存储在文件中)
argv[2] = "微辣" // 第二个参数:口味要求
argc
的值为 3(程序名 + 2 个参数)
argv[0]
:永远是程序自身的名称(例如./程序名
),这是系统自动填充的。argv[1]
:才是用户提供的第一个有效参数(这里指文件名)。
例如
在Linux下实现一个读菜单
log.txt放菜单内容
#include <stdio.h>#include <string.h>int main(int argc, char* argv[]){if (argc != 2) {printf("argv error!\n");return 1;}FILE *fp = fopen(argv[1], "r");if(!fp){printf("fopen error!\n");return 2;}char buf[1024];//创建一个缓冲区,用于存储从文件中读取的数据while(1){// fread函数从文件中读取数据到缓冲区//1-每个数据项的大小(单位:字节),sizeof(buf)-读取的数据项数量int s = fread(buf, 1, sizeof(buf), fp);if(s > 0){buf[s] = 0;printf("%s", buf);}if(feof(fp)){// 检查是否到达文件末尾break;}} fclose(fp);/ 关闭文件,释放系统资源return 0;}
具体函数
feof - C++ Reference
fread - C++ Reference
例如在
Linux下实现一个解析命令行参数
#include <stdio.h>int main(int argc, char* argv[]) {printf("参数总数(argc): %d\n", argc);// 遍历所有参数for (int i = 0; i < argc; i++) {printf("argv[%d] = %s\n", i, argv[i]);}// 检查是否有用户参数if (argc > 1) {printf("第一个用户参数: %s\n", argv[1]);}return 0;
}