我试图打印一个颠倒的字符串/数组。我使用了下面的代码,它似乎能够按照第一个数组的正确顺序给出第二个数组revString的值。我还能够在两个数组中打印单个字符,并且能够打印第一个数组的整个字符串。但是string数组根本不打印。我想知道我是不是漏掉了一个大问题。

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] = '\0';
    printf("%d\n", i_2);
    printf("%s", revString);
}

代码现在给出了下面的输出示例字符串revString
dlrow olleH13

正如你所看到的,最后的"Hello World"语句没有任何作用

最佳答案

在C语言中索引是基于0的。因此,如果您生成一个10长度的字符串,最后一个字符将位于索引9处。
在您的代码中,当您将字符分配给revString时,您的代码正试图访问string[len]。
你的代码应该是这样的。。
int i = strlen(string) - 1;

07-26 08:03