c - 具有大量输入文件的 C 程序的最佳实践
问题描述
我正在编写一个需要 7 个输入文件的 C 程序。我可以将这些作为命令行参数传递给我的程序,但它并不完全简洁,并且可能导致它们提供的顺序出错。
我曾想过创建 1 个包含 7 个必需文件名的输入文件,然后将其传递给我的程序。
向 C 程序提供大量输入文件的最佳实践是什么?
解决方案
将输入文件指定给程序的常用机制有很多种,其中比较突出(没有特别的顺序):
- 单独的命令行参数,可能带有内置的默认值(更多内容见下文)
- 作为参数传递的通用文件名词干,不同的单个文件具有不同的扩展名;具体的文件名是由程序从一个词干计算出来的
- 包含要操作的文件名的标准或用户指定文件
这些组合是可能的,并且还有其他选择。没有单一的最佳实践,选择哪种方法或方法在某种程度上取决于意见和个人偏好,可能与特定程序的特定实用性有关。
我可以将这些作为命令行参数传递给我的程序,但它并不完全简洁,并且可能导致它们提供的顺序出错。
我同意。
我曾想过创建 1 个包含 7 个必需文件名的输入文件,然后将其传递给我的程序。这是好习惯吗?
这是常用的方法之一。但是请注意,尽管它使命令行更加简洁,但它本身并不能解决排序问题。
就个人而言,我不会太热衷于具有七个必需参数的程序,但我也不喜欢被迫编写辅助文件只是为了将文件名传达给程序。就您确实使用命令行参数而言,我强烈建议您将它们定义为options,getopt()
就术语而言,因为混淆参数顺序否则对您的用户来说将是一个重要的实际问题。同样,如果您提供一个控制文件作为传达工作文件名的一种方式,那么我建议您更加努力地使用一种不区分顺序的键/值格式。在您可以提供合理的默认值的范围内,这也将提高易用性。
推荐阅读
- google-apps-script - 通过 Google Script 和 Web 界面执行的 Google 查询公式给出不同的结果
- kubernetes - 服务器节点是否应该与代理节点位于不同的服务器上,如何实现?
- email - 如何将 bigrock 的 mx 记录用于 infinityfree 托管?
- python - 无法更新到 Anaconda Navigator 1.10.0 (MacOS)
- ruby-on-rails - 通过Rails中的表连接has_many的属性
- javascript - 使用表格时 JavaScript 格式丢失
- c# - DisplayMemberPath 不适用于组合框
- flutter - 颤振漆之字形
- powershell - Sharepoint Online 列表项查询返回带有 Microsoft Graph API 的空数组
- spring - 从 Spring 3 转换到 Spring 5 时,我应该用什么替换 WebServiceTemplate