我试图打印一个颠倒的字符串/数组。我使用了下面的代码,它似乎能够按照第一个数组的正确顺序给出第二个数组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;