Esempio n. 1
0
static uv_err_t versionPrintPrefixThunk()
{
	const char *program_name = "uvobj2pat";
	
	/*
	if( g_config && g_config->m_argv )
	{
		program_name = g_config->m_argv[0];
	}
	*/

	printf_help("%s version %s\n", program_name, GetVersion());
	return UV_ERR_OK;
}
Esempio n. 2
0
int main(int argc,char* argv[])
{
	//下一个要处理的参数
	int i,j,cout,next_option=0;
	char a[100];
	int b=0;
	int ascii_change;

//	const char* const shor_options = "hv";

	//标识长选项和对应短选项的数组
	const struct option long_options[] = {
		{ "help", 0, NULL, 'h' },
		{ "version", 0, NULL, 'v' },
		{ NULL, 0, NULL, 0 },
		};

	//可执行文件名参数
	const char* f_name = NULL;

	//argv[0]始终指向可执行文件的文件名
	f_name = argv[0];
	int longindex;
	
	while (next_option != -1){
		next_option = getopt_long (argc, argv, "hvne", long_options, NULL);
		switch (next_option){
			// -h or --help
			case 'h':
				printf_help();
				break;
			// -v or --version
			case 'v':
				printf("\nAbout Myecho:A practice thing.\n\n");
				break;
			//出现未定义的选项
			case '?':
				printf("\n错误:出现未定义选项。\n");
				printf_help();
				break;
			//不换行输出
			case 'n':
				for(i=2;i<argc;i++)
				printf("%s ",argv[i]);
				//printf("\n");
				break;
			//特殊字符处理部分
			case 'e': 
				for(j=2;j<argc;j++){
					//判断字符串长度
					if((cout=strlen(argv[j]))<100){
						memcpy(a,argv[j],strlen(argv[j]));
						for(i=0;i<cout;i++){
							//遇到'\\'输出一个'\'
							if((a[i]==92)&&(a[i+1]==92)){
								printf("\\");
								i=i+2;
							}
							//遇到'\a'发出警告声
							if((a[i]==92)&&(a[i+1]==97)){
								printf("\a");
								i=i+2;
							}
							//遇到'\b'删除前一个字符
							if((a[i]==92)&&(a[i+1]==98)){
								printf("\b");
								i=i+2;
							}
							//遇到'\n'换行,光标到行首
							if((a[i]==92)&&(a[i+1]==110)){
								printf("\n");
								i=i+2;
							}
							//遇到'\f'或'\v'换行且光标在原来位置
							if( ((a[i]==92)&&(a[i+1]==102)) || ((a[i]==92)&&(a[i+1]==118)) ){
								printf("\f");
								i=i+2;
							}
							//遇到'\r'光标移到行首,但不换行
							if((a[i]==92)&&(a[i+1]==114)){
								printf("\r");
								i=i+2;
							}
							//遇到'\t'插入一个TAB
							if((a[i]==92)&&(a[i+1]==116)){
								printf("\t");
								i=i+2;
							}
							//遇到'\c',跳过,后面处理
							if((a[i]==92)&&(a[i+1]==99)){
								i=i+2;
							}
							//遇到'\nnn'输出ASCII码表对应的字符
							if((a[i]==92)&&(a[i+1]>=48)&&(a[i+1]<=50)){
								if((a[i+2]>=48)&&(a[i+2]<=57)&&(a[i+3]>=48)&&(a[i+3]<=57)){
									ascii_change=((int)a[i+1])*100+((int)a[i+2])*10+(int)a[i+3]+48;
									printf("%c",ascii_change);
									i=i+3;
								}
							}
							//否则按顺序输出
							else
							  printf("%c",a[i]);
						}
						//遇到'\c'时
						for(i=0;i<cout;i++){
							if((a[i]==92)&&(a[i+1]==99))
							  b=1;
						}
						
					}else 
					  printf("字符串过长。");
					printf(" ");
				}
				//若有'\c'出现,字符输出完毕后直接跳出,否则打印回车
				if(b==1)
				  break;
				else 
				  printf("\n");
				break;
			//没有命令参数按顺序输出
			default :
				for(i=1;i<argc;i++)
				printf("%s ",argv[i]);
				printf("\n");
				break;

		}
		break;
	}return 0;	
}