gpt4 book ai didi

c - 从文本文件中读入特定数据(C)

转载 作者:行者123 更新时间:2023-11-30 19:08:10 25 4
gpt4 key购买 nike

我正在尝试从 fmt 格式的变量文件中读取特定数据。所需的数据是abc的值以及fft系数(宽度、高度、深度) 在本例中为 (25,300,300)。

一个示例是从此文件中分配变量:a = 2.467b = 30.000c = 30.000 宽度=25 高度=300 深度 = 300。然而,这些值会随着输入文件的变化而变化。

目前我能想到的读取这些内容的唯一方法是从它们在文本文件中的位置。然而我不喜欢这样,因为如果文本文件的布局略有变化,它很容易出现错误。任何人都可以建议一种替代方法(是否有类似于 C 中的 python re 模块的东西)?

请参阅下面的示例文本文件:

BEGIN header

Real Lattice(A) Lattice parameters(A) Cell Angles
2.4675850 0.0000000 0.0000000 a = 2.467585 alpha = 90.000000
0.0000000 30.0000000 0.0000000 b = 30.000000 beta = 90.000000
0.0000000 0.0000000 30.0000000 c = 30.000000 gamma = 90.000000

1 ! nspins
25 300 300 ! fine FFT grid along <a,b,c>
END header: data is "<a b c> pot" in units of Hartrees

最佳答案

您首先应该指定并形式化实际的file format 您的输入(单个示例是不够的)。至少出于文档目的,您可以使用一些 EBNF符号(我可以猜测,但不确定 BEGINLattice 在其中很重要,但 fmt 维基页面没有提及它们)。

An example would be from this file

这是一个错误的做法。您需要了解您的程序能够处理的通用文件格式,这是软件设计的一部分。所以最好先明确一下。

然后你将使用通常的 parsing技术。另请阅读 lexical analysis 。也许是parser generatorGNU bison可能会有帮助,或者可能是一个简单的 recursive descent parser可能就足够了。也许您的输入格式关心行,那么您可以一一读取它们(例如使用 POSIX getline )并解析它们中的每一个。

阅读Dragon Book是值得的。

Is there something similar to the python re module in C

POSIX 有 <regex.h> ;请参阅regcomp(3) ;另请查看pcre2 。我不确定它在这里是否相关。

关于c - 从文本文件中读入特定数据(C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45833961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com