如何在 C 中将文本文件作为命令行参数

2024-05-04

基本上,我试图接受命令行文本文件,以便当我以“program instructions.txt”运行程序时,它会存储指令中列出的值。但是,我在测试当前拥有的内容时遇到了麻烦,因为它给了我错误“分段错误核心已转储”。

int main(int argc, char* argv[]) {
    setup_screen();
    setup();

    // File input
    char textExtracted[250];
    FILE* file_handle;
    file_handle = fopen(argv[1], "r");
    while(!feof(file_handle)){
        fgets(textExtracted, 150, file_handle);
    }

    fclose(file_handle);

    printf("%s", textExtracted[0]);

    return 0;   
}

文本文件里面是

A 1 2 3 4 5
B 0 0
C 1 1

我只是想将每一行存储在一个数组中,然后打印它们。


几点:

int main(int argc, char* argv[]) {

我建议您在继续之前检查此处的参数数量

setup_screen();
setup();

// File input
char textExtracted[250];

可以连接声明,但始终检查 I/O 的返回值

FILE* file_handle = = fopen(argv[1], "r");
if (NULL == file_handle)
{
  perror(argv[1]);
  return EXIT_FAILURE;
}

下面不是从文件中读取的正确方法,相反,您应该 首先尝试从文件中读取,然后检查读取的错误/eof/enuff 字节

// while(fgets(textExtracted,sizeof(textExtracted), 1, file_handle) > 0) {}

while(!feof(file_handle)){
    fgets(textExtracted, 150, file_handle);
}

看起来您认为 fgets 在调用时会附加到 textExtracted 多次了,还是不行!文件中的每一行都会覆盖先前读取的行。另请注意,缓冲区中包含 \n 字符。

但由于您的文件看起来很小,您可以阅读整个文件 内容到你的缓冲区并使用它。

// int size = fread(textExtracted, sizeof(textExtracted), 1, file_handle);

更好的方法是首先检查文件的大小,然后使用 malloc 分配一个缓冲区来保存整个文件或逐个字符地读取文件并执行您需要执行的任何命令。例如switch 语句作为状态机非常出色

switch( myreadchar )
{
   case 'A':
     break;
   case 'B':
     break;
   ...
}

textExtracted[0] 是一个字符,textExtracted 是整个数组,所以而不是

printf("%s", textExtracted[0]);

write

printf("%s", textExtracted);

甚至更好

fputs(textExtracted, stdout);

return 0;   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C 中将文本文件作为命令行参数 的相关文章

  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new

随机推荐

  • Web 服务代码不返回字符串数组

    我想从我的 Web 服务方法返回 abc xyz ghi tru 其中 是分隔符 形式的字符串数组 但是我做不到 这是我当前的网络服务代码 using System using System Collections using System
  • 在 Hyperledger Composer 中包含外部库文件

    有没有办法在 Hyperledger Composer 中包含外部库 我想用这个图书馆 http numeraljs com 用于货币计算 我在这看到post https stackoverflow com questions 446888
  • 使用 Caret 包的测试集的 ROC 曲线

    我正在尝试从测试集上的插入符号中获取最佳模型的 ROC 曲线 我碰到MLeval包似乎很方便 输出非常全面 使用几行代码提供了所有需要的指标和图表 一个很好的例子在这里 https stackoverflow com a 59134729
  • LogCat 不显示标签“SMS”

    Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R layout main L
  • 如何防止在 CSS 中调整图像大小?

    我有以下代码来创建图像库 他们需要做出反应 但问题是 当窗口宽度发生变化时 图像也会调整大小并失去纵横比 我怎样才能解决这个问题 我是 CSS 新手 padding 0 margin 0 HEADER STYLES header width
  • 垂直和水平平行度

    最近在并行领域工作 我了解到有两个术语 垂直并行 和 水平并行 有人说openmp 共享内存并行 是垂直并行 而mpi 分布式内存并行 是水平并行 为什么这些术语这么称呼 我不明白原因 这么称呼它们只是术语吗 这些术语似乎没有被广泛使用 也
  • 如何重定向Python中包含的类的所有方法?

    如何实现组合模式 我有课Container它有一个属性对象Contained 我想重定向 允许访问所有方法Contained班级来自Container只需调用my container some contained method 我是否以正确
  • SQLAlchemy TypeDecorator 不起作用

    我在用着xml在我的 postgresql 数据库中 我需要一个可以处理的自定义类型xmlSQLAlchemy 中的数据 所以我做了XMLType班级与xml etree 但它并没有按照我的意愿工作 这是我写的代码 import xml e
  • 如何减小heroku slug的大小?

    我的 slug 大小为 89 5MB 非常大 然而 存储库的大小非常小 du hsc 8 0M 8 0M total 继这篇博文之后 http dazedthots blogspot com 2011 07 reducing slug si
  • 数据库无法检索图像或为空,导致数组错误。如何修复它?

    我的问题是java lang IndexOutOfBoundsException 无效索引 0 大小为 0 我不知道如何修复此错误 并且我的阵列上没有发现任何问题 我是安卓新手 希望大家理解 也许这是我的错误的原因value put KEY
  • 我是否必须注册新的捆绑包 ID 才能将新应用程序上传到 iTune Connect?

    这是我第一次将应用程序上传到 iTunes Connect 这让我感到害怕 捆绑包 ID 的选择似乎只是一种选择 Xcode iOS 通配符应用程序 ID 下面有一行 你可以注册一个新的bundle id 问题是 我需要注册一个新的bund
  • 最大流量算法的修改

    我试图解决一个关于最大流量问题 http en wikipedia org wiki Maximum flow problem 我有一个源和两个接收器 我需要找到该网络中的最大流量 这部分是一般的最大流量 然而 在这个特殊版本的最大流量问题
  • 用于存储应用程序用户机密的 Azure Key Vault 机密

    在我的应用程序中 我必须存储用户的非常敏感的数据 例如其他第三部分服务的各种密码 用户填写一个表格 向我们提供第三部分服务的登录名和密码 该应用程序的目标是使用从 100 多个输入生成的 powershell 脚本来设置其他复杂系统 需要将
  • 带有复合主键的 Room @Relation

    我的问题是这个问题的延伸 也是我的 gt 房间复合主键链接到外键 https stackoverflow com questions 50248668 room composite primary key link to foreign k
  • 将 QTcpSocket 绑定到特定端口

    我正在通过一个连接QTcpSocket to a QTcpServer 我可以在服务器端指定侦听端口 但客户端会选择随机端口进行连接 我尝试过使用该方法QAbstractSocket bind但这没有什么区别 这是我的代码 void Con
  • 我如何使用 angularJS Restful 服务使用来自外部文件的 json 数据

    我正在开发一个应用程序 我正在从一个中检索 json 数据 使用 http get 方法的外部文件工作正常 现在我正在尝试使用角度 安心的服务 它在过滤器中工作正常 但是当我在控制器中使用它时 它是 显示未定义 Service js Fil
  • PDF解析提取CheckBox字段值

    我有一个 PDF 文档 想要从 PDF 和 Chackbox 和单选按钮类型字段值中提取内容 PDF 文件的版本为 1 4 Acrobat 5 x 可以从网络浏览器生成 CheckBox appear such types in PDF 我
  • 在 x86 程序集中将整数打印到控制台

    当我在 16 位汇编中添加两个值时 将结果打印到控制台的最佳方法是什么 目前我有这个代码 CODE START mov ax 1 put 1 into ax add ax 2 add 2 to ax current value mov ah
  • 在调试器中枚举 EF6 中的 IEnumerable 会出现“无法评估子项”错误

    我有一个新的 ASP NET MVC 5 项目 并尝试通过 IdentityDbContext 查询代码优先数据库 如果我查询特定的 DbSet 并插入断点 尝试读取 IEnumerable 的内容将导致 VS 2013 告诉我无法评估子级
  • 如何在 C 中将文本文件作为命令行参数

    基本上 我试图接受命令行文本文件 以便当我以 program instructions txt 运行程序时 它会存储指令中列出的值 但是 我在测试当前拥有的内容时遇到了麻烦 因为它给了我错误 分段错误核心已转储 int main int a