首页 > 解决方案 > 如何修改这个char数组?

问题描述

我正在使用堆栈进行字符串反转,我是怎么做的,将字符一个字符一个字符地存储在堆栈中,然后将它们一个接一个地取出,这样它们就被反转了,但是当我将字符分配给堆栈弹出元素我遇到了问题,因为堆栈由 void 组成:

char *string_invert(char *str)
{
    Stack *s1 = NULL;
    char *result;
    int i = 0;
    s1 = stack_init();
    if (s1 == NULL)
    {
        return NULL;
    }

    while (str[i] != '\0')
    {
        stack_push(s1, &str[i]);
        i++;
    }

    result = (char *)malloc((i + 1) * sizeof(char));
    if (result == NULL)
    {
        return NULL;
    }

    i--;
    while (stack_isEmpty(s1) != TRUE)
    {
        result[i] = stack_pop(s1);
        i--;
    }

    stack_free(s1);
    return result;
}

在此处输入图像描述

标签: c

解决方案


推荐阅读