在C中打印反转的字符串/数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C中打印反转的字符串/数组相关的知识,希望对你有一定的参考价值。

我正在尝试打印反向字符串/数组。我已经使用了以下代码,它似乎能够从第一个数组revString以正确的顺序给出我的第二个数组string值。我也能够在两个数组中打印单个字符,并且我能够打印第一个数组的整个字符串。但是revString阵列根本不打印。我想知道我是否在这里错过了一个重点。

void reverseString(char string[]) {
    int i = strlen(string);
    int i_2 = 0;
    revString arrayet
    char revString[i + 1];
    char *character; 

    while (i > -1) {
        character = &string[i];
        revString[i_2] = *character;
        printf("%c", revString[i_2]);
        i = i - 1;
        i_2 = i_2 + 1;
    }
    revString[i_2] = '';
    printf("%d
", i_2);
    printf("%s", revString);
}

代码现在给出了以下输出,带有示例字符串"Hello World";

dlrow olleH13

如你所见,最终的printf声明没有做任何事情

答案

在C语言中,索引是基于0的。所以,如果你创建一个10长度的字符串,最后一个字符将在索引9。

在您的代码中,当您将字符分配给revString时,您的代码正在尝试访问字符串[len]。

你的代码应该是这样的..

int i = strlen(string) - 1;

另一答案

您的代码在string中反转字符串string[i],包括空终止符。结果数组以null终止符开头,因此printf不输出任何内容。

这是一个修改版本:

void reverseString(char string[]) {
    int i = strlen(string);
    int i_2 = 0;
    char revString[i + 1];
    char character;

    while (i > 0) {
        i = i - 1;
        character = string[i];
        revString[i_2] = character;
        //printf("%c", revString[i_2]);
        i_2 = i_2 + 1;
    }
    revString[i_2] = '';
    printf("%d
", i_2);
    printf("%s", revString);
}

输出:

11
dlrow olleH

以上是关于在C中打印反转的字符串/数组的主要内容,如果未能解决你的问题,请参考以下文章

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

中缀到前缀的程序中的c函数中未返回反转字符串

LC 反转字符串

关于代码片段的时间复杂度

如何使用数组打印 10 位大数字的反转?