【发布时间】:2013-04-14 19:32:04
【问题描述】:
这是我正在使用的代码...
while(temp[i]!=0){
while(temp[i]!=3){
FrameBuffer[a]=temp[i];
i++;
a++;
}
FrameBuffer[a]=temp[i];
printf(" Framebuffer: %s ", FrameBuffer);
result=layer1(FrameBuffer,PacketAction);
i++;
a=0;
}
问题是我希望 FrameBuffer 在每次通过内部 while 循环时都被重置(在循环开始时 FrameBuffer 的大小为 0)。我尝试使用 free(FrameBuffer) 但我收到错误,因为我多次释放数组。我也试过写 FrameBuffer=NULL,但是没有用。任何帮助将不胜感激。谢谢!
【问题讨论】:
-
请展示更多,尤其是你如何声明
FrameBuffer。 -
另外,除非添加字符串终止符
'\0',否则不能将其用作字符串。 -
我将其声明为... char *FrameBuffer=calloc(2048,sizeof(char));
-
如果它真的只包含一个以空字符结尾的字符串,那么您不需要释放或清除它,只需将
'\0'写入最后一个字节即可。恐怕你让我们猜到你所说的“reset”是什么意思。 -
嗯,也许我对“空终止字符串”一词感到困惑。 while 循环的第一次迭代几乎要经过 99 次,而第二次迭代将经过 98 次。我想要的 FrameBuffer[0]-FrameBuffer[97] 将被覆盖。但是该 FrameBuffer[98] 将具有与第一次迭代相同的内容。我想要它,以便每次迭代后 FrameBuffer 中都没有任何内容。