如何仅使用for循环在C中向后打印输入的字符串

Cor*_*rey 1 c arrays for-loop

我想向后打印一个字符串.但我的代码似乎倒数从数组中的最后一个字母到数组中的第一个字母的字母表,而不是倒数数组本身并吐出数组中的每个字母.

我的代码,

   #include <stdio.h>
   #include <string.h>

   int main(void) {

char word[50];
char end;
char x;

printf("Enter a word and I'll give it to you backwards: ");

scanf("%s", word);

end = strlen(word) - 1;

for (x = word[end]; x >= word[0]; x--) {
    printf("%c", x);
}

return 0;
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢.

Jas*_*ary 6

你有什么数组元素值之间的循环.您希望在数组索引之间循环.将循环更新为以下内容:

for (x = end; x >= 0; --x) {
    printf("%c", word[x]);
}
Run Code Online (Sandbox Code Playgroud)

请注意,这从最后一个索引变为零,并输出该索引处的字符.也是使用预减量的for循环中的微优化.