繁体   English   中英

标准(或方便)方法,用于读取和写入表格数据到c中的文本文件

[英]Standard (or convenient) method to read and write tabular data to a text file in c

这可能听起来很尴尬,但我想问一下,是否有一种常用的方法是将表格数据存储在文本文件中,以便用C语言进行读写。

就像在python中一样,你可以通过f.readlines将一个完整的文本文件加载到一个数组中,然后遍历所有的行,并用特定的字符或字符序列(分隔符) split每一行。

你如何在C中解决这个问题?

几乎和其他任何语言一样。 选择一个字段分隔符(IE, tab符),打开文本文件进行读取并解析每一行。

当然,在C它永远不会像在Python那么容易,但方法是相似的。

哇。 我对其他答案感到困惑,这让我觉得我在Mainframes.stackexchange.com而不是stackoverflow.com

为什么不选择JSON或XML等现代数据格式,并遵循您选择的数据格式的最佳实践?

如果你想要一个优秀的JSON读写器,我已经使用过Jansson ,它非常容易和快速。

如果你想要一个优秀的C读者/ 编写器,我已经使用了miniXML ,它也很容易和快速。 还支持SAX *和* DOM,具体取决于您希望如何在XML中读取。

显然,还有很多其他库可用。

请不要给下一个人来支持你的程序一些古怪的自定义文件格式来处理。

我发现getline()strtok()非常方便( getline是一个gnu扩展,在POSIX.1-2008中标准化)。

有一些机制,但是有一个原因可以解释为什么脚本语言在过去的二十年里变得如此受欢迎 - 在脚本语言中看起来很简单的一些任务在C语言中很重要。

  • 您可以使用flexbison为表编写解析器。 这实际上只有在格式定义得很好且“静态”时才有效。 它们是令人惊叹的工具,可以做的比你想象的要多,但它是一种非常重的机器,只需用脚本语言中的split()即可完成。

  • 您可以使用getdelim(3)读取单个字段。 然而,这只是用POSIX.1-2008标准化的,所以这远非普遍存在。 (每个使用glibc的Linux机器都应该有它们。)

  • 您可以使用fgets(3)读取行并使用strchr(3)发现拆分位置。

  • 您可以使用fgets(3)读取行并使用strtok(3)来标记字符串。

  • 您可以使用scanf(3)执行输入和扫描; 从这里的问题看来, scanf(3)很难正确使用。

  • 您可以使用一次一个字符的解析方法:使用getc(3)读取字符,检查它,使用它做一些事情,迭代直到不再有字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM