【发布时间】:2013-05-09 05:49:19
【问题描述】:
我正在尝试将堆栈转换为字符串。我的功能是
int StackToString(const struct Stack *stack, char *result, int resultSize);
我希望我的堆栈看起来像
- 堆栈[STACK_MEMORY_ADDRESS]:
- ELEMENT_NUMBER:数据 ...
- ELEMENT_NUMBER:数据
如果结果中有足够的空间,字符串应该存储在那里,我想返回一个“1”值。如果没有(由 resultSize 决定),则返回 0,结果未定义。
到目前为止,这是我写的:
int StackToString(const struct Stack *stack, char *result, int resultSize){
int i;
char str[20];
sprintf(str, "stack[0x%x]:\n", stack);
strcat(result, str);
for(i=0; i<stack->currentItemIndex;i++){
???
}
}
任何人都可以就我接下来应该做什么提供任何建议吗?我想我需要做一些冲刺并将堆栈中的剩余元素与结果大小进行比较并在某些情况下返回,但我不确定如何实现它......
【问题讨论】:
-
sprintf进入 str 和strcat结果,正如你已经在做的那样,只是在一个循环中?这听起来是正确的想法。 -
你在
stack中保存了什么样的数据? -
你可以销毁堆栈吗?堆栈是否提供对内部元素的访问?如果没有,您可能需要从一个堆栈中弹出项目,将它们转换为字符串,然后将项目推入另一个堆栈。当原始堆栈为空时,您可以重新加载从第二个堆栈弹出的项目 - 排序正常。