【发布时间】:2016-03-15 06:06:15
【问题描述】:
我有一个 ID 看起来像这样的缓冲区
InBuffer={ID1,ID2,ID3,...}
我需要遍历,每次在函数中使用 ID,该函数返回指向分配给此 ID 的数据的指针和数据的大小。然后我需要用
形式的结果填充另一个缓冲区OutBuffer={ID1,SIZE1,DATA1.WORD1,...,DATA1.WORDSIZE1,
ID2,SIZE2,DATA2.WORD1,...,DATA2.WORDSIZE2,
...,
IDN,SIZEN,DATAN.WORD1,...,DATAN.WORDSIZEN
}
我在为此形成整个 for 循环及其索引时遇到问题,主要是因为每个 SIZE 变量可能不同。它应该很简单,但我似乎无法让它工作。
提前感谢您的帮助。
// For example
// Iterate through the remaining of the Request Buffer (m=0,1 already set)
for (m = 2; m < InBuffer; m++)`
{
OutBuffer[m] = InBuffer[m];
returnPointersToDataAndSizeFunction(InBuffer[m], &SIZE, &DATA);
OutBuffer[m + 1] = SIZE; // e.g. SIZE = 2, therefore DATA has 2 fields
OutBuffer[m + 2] = DATA.1; // first field
OutBuffer[m + 3] = DATA.2; // second field
// and so on
}
【问题讨论】:
-
请添加更多代码,我们可以帮助您。尤其是你在第二段中描述的那一点。
-
@user3374479,目前还不清楚。也许您可以用实际数据和相关代码编写一个清晰的示例。
-
@user3374479 当你不知道你的索引应该如何流入你的算法时,你应该通过声明它们来开始你的评论,并更好地使用数学教科书中的名称,例如:
1<i<m,@ 987654325@,其中 m 是 InBuffer 的大小,n 是 outbuffer 的大小。 (只是一种,因为当你算法开始时,除了 n>2*m 之外,你无法告诉任何关于 n 的信息。 -
没有变量声明的代码发布是没有意义的。阅读别人的代码时,首先要检查的是所有变量的类型。