Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将数据关联到文本文件_C_Text_Text Files_Metadata - Fatal编程技术网

C 将数据关联到文本文件

C 将数据关联到文本文件,c,text,text-files,metadata,C,Text,Text Files,Metadata,我需要一个很好的方法来实现以下目标: 我有几个文本文件,我需要能够关联到一些行和其他数据 例如 文本文件: Line1 Line2 ... ... Line98 其他数据: Line1 |This is additional data Line2 |associated with line1 till line2 ... ... Line98 我不想修改文本文件,所以我需要将此信息存储在另一个文件中。请注意,文本文件可能会更改,所以跟踪行数并不是一种安全的方法 有什么建议吗?如果

我需要一个很好的方法来实现以下目标:

我有几个文本文件,我需要能够关联到一些行和其他数据

例如

文本文件:

Line1
Line2
...
...
Line98
其他数据:

Line1    |This is additional data
Line2    |associated with line1 till line2
...
...
Line98
我不想修改文本文件,所以我需要将此信息存储在另一个文件中。请注意,文本文件可能会更改,所以跟踪行数并不是一种安全的方法


有什么建议吗?

如果无法更改文本文件,一种解决方案是复制文本文件,并使用附加信息修改副本。当有人修改原始文件时,您可以通过注意到原始文件中的并非所有行都具有与之相关联的信息(在您的副本中带有附加信息)来检测更改

但是,实际上更好的解决方案是以某种简单的方式更改原始文件,这样可以很容易地找到相关的附加信息。比如:

Line1 [INFO-1]
Line2 [INFO-2]
...
...
Line98 [INFO-98]
在你的另一个文件中,你会

[INFO-1] Additional info associated with INFO-1 tag that
can continue on the next line if you want
[INFO-2] Additional info for INFO-2
...
[INFO-98] Additional info

现在,当有人更改原始文件时,新行将不会有
[INFO-#]
标记,而使用现有的
[INFO-#]
标记更改一行不会更改与之关联的其他信息。

文本文件如何更改?您能否将自己的更改限制为仅限于某些文件系统类型?例如,NTFS(Windows)和HFS+(Mac OS X)支持备用数据流。@KerrekSB文本文件可以更改,因为用户可以使用它们添加或删除行(删除行也应该删除附加数据)。@JohnPell:如果行本身没有更改,您可以为每行计算一个散列值,并将其用作键。@JohnPell:谢谢您接受我的回答,您的问题+1。