gpt4 book ai didi

将堆栈转换为字符串

转载 作者:行者123 更新时间:2023-11-30 15:49:03 42 4
gpt4 key购买 nike

我正在尝试将堆栈转换为字符串。我的功能是

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++){
???
}
}

任何人都可以提供关于我下一步应该做什么的建议吗?我想我需要对某些东西进行冲刺,并将堆栈中的剩余元素与结果大小进行比较,并在一定的情况下返回,但我不确定如何实现它......

最佳答案

如果您可以使用 snprintf() 而不是 sprintf(),您可以摆脱中间缓冲区和额外的复制。这也将保证您的结果缓冲区不会被覆盖。

int StackToString(const struct Stack *stack, char *result, int resultSize) {
int i;
int n;
n = snprintf(result, resultSize, "stack[0x%x]:\n", stack);
if (n < 0 || n >= resultSize)
return 0;
result += n;
resultSize -= n;
for (i = 0; i < stack->currentItemIndex; i++) {
n = snprintf(result, resultSize, "%d: 0x%x\n", i, stack->items[i]);
if (n < 0 || n >= resultSize)
return 0;
result += n;
resultSize -= n;
}
return 1;
}

关于将堆栈转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16455249/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com