我有个简单的问题。我必须把一些python代码转换成c语言,而我对c语言没有那么丰富的经验
我在python中遍历一个文件,逐行读取。如果行中有某个标记,我必须将其拆分并将值读入int数组。然后使用该数组进行进一步处理。此处给出了一个文件示例:
Event 163
Time 29-05-2013, 11:41:45
TDC1.HEX_B 927532 1460340
TDC1.HEX_F -1
TDC1.HEX_x1 930080 1462311
TDC1.HEX_x2 929198 1462611
TDC1.HEX_y1 1462957
TDC1.HEX_y2 928628 1462151
TDC1.HEX_z1 929097
TDC1.HEX_z2 930314 1462992
TDC1.Trigger 1728347
errors 0 0 0 0
proc_time 40
%
Event 500
现在我的问题是,我不知道每行中会有多少个整数。在python中,我可以这样做:
^{pr2}$在这个例子中,B是一个长度与numbers\u str中的数字计数相对应的列表。在c中是否有类似的可能性分配一个足够长的数组?稍后在处理数据时,我必须遍历数组。我读过关于malloc()和realloc()的文章。他们有帮助吗?如果是这样的话,有没有好的资源来阅读它们呢?我是否需要先读取这一行,然后为该行中的int数malloc一个数组?在
如果你可以使用C++,你可能会发现一个std::vector更容易使用。如果您必须使用C语言,那么可以将数组malloc设置为某个初始大小,并使用int来跟踪它的大小以及它的完整程度。然后,每次添加到数组时,都要检查是否要过满,如果是,则重新分配它以使其容量更大(例如每次为x2)。在
一些代码:
如果您不知道所需的数组有多大,}就是您需要的。使用
malloc()
和{malloc()
在开始时分配内存。将一个变量保留为当前分配的内存大小,另一个变量保留到目前为止存储的值的数量。当存储了最大数量的值后,使用realloc()
来获得更大的内存区域。在相关问题 更多 >
编程相关推荐