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

时间:2010-12-02 03:21:27

标签: 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;
}

有什么建议吗?谢谢。

6 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:3)

您正在调用数组值而不是特定索引。

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

答案 2 :(得分:1)

您希望打印word[x](数组中的第x个字符)而不是x(字符集中的第x个字符)。

您还希望对索引进行倒计时,而不是字符。

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

答案 3 :(得分:0)

在循环中,x是包含word的字符数组的索引。因此x应从end更改为0,引用该数组应为word[x]

答案 4 :(得分:0)

//Change end to int type and modify your for loop as shown.
#include <stdio.h>
#include <string.h>

int main(void) 
{

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

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

scanf("%s", word);

end = strlen(word) - 1;

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


return 0;
}

答案 5 :(得分:0)

#include <stdio.h>
#include <stdlib.h>

/*
 * 
 */
int main(int argc, char** argv) {
    int i;
    char letters[3]="";
    printf("Enter three letters!");
    scanf("%s",letters);
    for(i=3;i>=0;i--){
        printf("%c", letters[i]);
    }
    return (EXIT_SUCCESS);
}