getopt解析命令行传参
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#define STRLENTH 1024
int main(int argc, char **argv)
{
int c;
char strfmt[STRLENTH]={0};
char strTm[STRLENTH]={0};
FILE* fp=stdout;
time_t currentTime;
struct tm *currentTm;
currentTime = time(NULL);
currentTm = localtime(¤tTime);
while(1)
{
c = getopt(argc, argv, "-MmSY:H:d");
if(c<=0) break;
switch(c)
{
case 1: //非选项传参
fp = fopen(argv[optind-1],"w+");
if(fp == NULL)
{
fp = stdout;
}
break;
case 'Y': //带参选项
if(strcmp(optarg, "2") ==0)
{
strncat(strfmt,"%y ",STRLENTH);
}
else if(strcmp(optarg, "4") ==0)
{
strncat(strfmt,"%Y ",STRLENTH);
}
else
{
fprintf(stderr,"Y format error\n");
}
break;
case 'm':
strncat(strfmt,"%m ",STRLENTH);
break;
case 'd':
strncat(strfmt,"%d ",STRLENTH);
break;
case 'H':
if(strcmp(optarg, "12") ==0)
{
strncat(strfmt,"%I(%P) ",STRLENTH);
}
else if(strcmp(optarg, "24") ==0)
{
strncat(strfmt,"%H ",STRLENTH);
}
else
{
fprintf(stderr,"H format error\n");
}
break;
case 'M':
strncat(strfmt,"%M ",STRLENTH);
break;
case 'S':
strncat(strfmt,"%S ",STRLENTH);
break;
default:
break;
}
}
strncat(strfmt,"\n",STRLENTH);
strftime(strTm, STRLENTH, strfmt, currentTm);
fputs(strTm, fp);
if(fp != stdout)
fclose(fp);
exit(0);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现