main

本文介绍了一个文件处理程序的设计与实现过程,该程序支持用户选择单个文件或目录中的多个文件进行处理,并提供了覆盖或保留源文件的选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**while(true)*/		log.info("请输入您的选项:\n\t" +
								"1.执行单个文件;\n\t" +
								"2.执行目录中的多个文件.\n" +
								"enter:");
			input = scanner.nextLine().trim();
			if("exit".equals(input.toLowerCase()))
			{
				System.exit(0);
			}
			int i = 0;
			try
			{
				i = Integer.valueOf(input);
			}
			catch (RuntimeException e)
			{}
			if(i!=2 && i!=1)
			{
				log.error("输入有误,请重试!");
				continue;
			}
			switch(i)
			{
				case 1:
					String[] paras = null;
					String src = "";
					String des = "";
					do
					{
						log.info("请输入需要处理的文件以及目标文件名," +
								"使用空格隔开,(如果文件或包含文件的目录名中有空格," +
								"请使用双引号括起来作为一个整体)," +
						"如在源文件上处理,输入一个即可:");
						try
						{
							paras = Paras.toParas(scanner.nextLine().replace('/', '\\'));
						}
						catch (RuntimeException e)
						{
							log.error(e.getMessage());
							continue;
						}
						if(paras.length == 1 && !"".equals(paras[0]))
						{
							src = des = paras[0];
						}
						else if(paras.length == 2)
						{
							src = paras[0];
							des = paras[1];
						}
						else
						{
							log.error("参数个数不对,请重试");
							continue;
						}
						if(pattern.matcher(src).find() || pattern.matcher(des).find())
						{
							log.error("名称中包含非法字符,请重试!");
							continue;
						}
						break;
						
					}while(true);
					
					if(_pattern.matcher(src).find() && !_pattern.matcher(des).find())
					{
						des = src.replace(src.substring(src.lastIndexOf("\\")+1), des);
					}
					log.info(des);
					if(exec.exeFile(src, des))
					{
						log.info("操作已成功完成.");
						runtime.exec("explorer /select,"+des);
						break;
					}
					continue;
				case 2:
					log.info("请输入需要处理的文件所在目录:");
					input = scanner.nextLine().trim();
					String _2 = "";
					do 
					{
						log.info("是否覆盖源文件?\n\t1.覆盖(直接回车);\n\t2.不覆盖(文件名以_finished作为标记).");
						_2 = scanner.nextLine().trim();
					}while(!_2.matches("[12]") && _2.length()!=0);
					
					if(exec.exeDir(new File(input), !_2.equals("2")))
					{
						log.info("操作已成功完成.");
						runtime.exec("explorer /n,"+input.replace("/", "\\"));
					}
					break;
				default:
					log.error("输入有误,请重试!");
			}

 

07-01
在编程领域中,`*main` 通常与程序的入口函数相关,特别是在 C/C++ 中,`main` 函数是程序执行的起点。有时 `*main` 可能表示带有指针参数的 `main` 函数形式,例如 `int main(int argc, char *argv[])`,其中 `char *argv[]` 表示命令行参数列表。 以下是几种常见的 `main` 函数写法及其用途: 1. **基本形式** ```c int main() { // 程序主体 return 0; } ``` 这是最简单的 `main` 函数定义方式,不接收任何命令行参数。 2. **带参数的形式** ```c int main(int argc, char *argv[]) { for (int i = 0; i < argc; i++) { printf("Argument %d: %s\n", i, argv[i]); } return 0; } ``` 此形式允许程序接收命令行参数。`argc` 表示参数个数,`argv` 是一个字符串数组,包含所有参数值。 3. **带环境变量的扩展形式(非标准但常见于 Unix/Linux)** ```c int main(int argc, char *argv[], char *envp[]) { while (*envp != NULL) { printf("%s\n", *envp++); } return 0; } ``` 此版本额外接收环境变量列表,用于访问操作系统提供的环境信息。 4. **调试技巧:打印 `main` 地址** 在某些调试场景中,开发者可能会打印 `main` 函数的地址以进行内存分析: ```c printf("Address of main: %p\n", &&main); ``` 5. **嵌入式系统或底层开发中的 `*main` 用法** 在裸机编程或引导加载程序中,`main` 函数可能需要被显式调用或跳转执行,例如通过函数指针: ```c void (*entry_point)() = main; entry_point(); ``` 6. **C++ 中的 `main` 特性** C++ 标准要求 `main` 函数返回类型为 `int`,并支持上述各种参数形式。用户不能重载或递归调用 `main`。 7. **错误处理建议** 如果程序因异常或崩溃未能正常退出,应确保 `main` 返回非零值以指示失败状态,例如: ```c if (some_error_condition) { fprintf(stderr, "An error occurred.\n"); return 1; } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值