在C中反转循环中的数组

在C中反转循环中的数组,c,arrays,C,Arrays,我正试图写一个程序,使每一行的单词颠倒过来 #include <stdio.h> int main() { char word[2001], letter; int size = 0, i; while((letter = fgetc(stdin)) != EOF) { word[size] = letter; size++; } for(i = size - 1; i >= 0; i--)

我正试图写一个程序,使每一行的单词颠倒过来

#include <stdio.h>
int main() 
{
    char word[2001], letter;
    int size = 0, i;
    while((letter = fgetc(stdin)) != EOF) 
    {
        word[size] = letter;
        size++;
    }

    for(i = size - 1; i >= 0; i--) 
    {
        printf("%c", word[i]);
    }
    return 0;
}
输出为:

sdneirf
ym
olleH
但我想要这样的输出:

olleH
ym
sdneirf

我要解决的问题是什么?

您应该在每行末尾进行打印

另外,
fgetc()
的返回值应该存储到
int
,而不是
char
,因为返回值是
int
,与
EOF
相比,将其转换为
char
可能是一个障碍

固定示例:

#include <stdio.h>
int main() 
{
    char word[2001];
    int size = 0, i;
    for (;;)
    {
        int letter = fgetc(stdin);
        if (letter == '\n' || letter == EOF) {
            for(i = size - 1; i >= 0; i--) 
            {
                printf("%c", word[i]);
            }
            if (size > 0) putchar('\n');
            size = 0;
            if (letter == EOF) break;
        } else {
            word[size] = letter;
            size++;
        }
    }

    return 0;
}
#包括
int main()
{
char-word[2001];
int size=0,i;
对于(;;)
{
int字母=fgetc(标准输入);
如果(字母=='\n'| |字母==EOF){
对于(i=size-1;i>=0;i--)
{
printf(“%c”,字[i]);
}
如果(大小>0)putchar('\n');
尺寸=0;
如果(字母==EOF)中断;
}否则{
字[大小]=字母;
大小++;
}
}
返回0;
}

您应该在每行末尾进行打印

另外,
fgetc()
的返回值应该存储到
int
,而不是
char
,因为返回值是
int
,与
EOF
相比,将其转换为
char
可能是一个障碍

固定示例:

#include <stdio.h>
int main() 
{
    char word[2001];
    int size = 0, i;
    for (;;)
    {
        int letter = fgetc(stdin);
        if (letter == '\n' || letter == EOF) {
            for(i = size - 1; i >= 0; i--) 
            {
                printf("%c", word[i]);
            }
            if (size > 0) putchar('\n');
            size = 0;
            if (letter == EOF) break;
        } else {
            word[size] = letter;
            size++;
        }
    }

    return 0;
}
#包括
int main()
{
char-word[2001];
int size=0,i;
对于(;;)
{
int字母=fgetc(标准输入);
如果(字母=='\n'| |字母==EOF){
对于(i=size-1;i>=0;i--)
{
printf(“%c”,字[i]);
}
如果(大小>0)putchar('\n');
尺寸=0;
如果(字母==EOF)中断;
}否则{
字[大小]=字母;
大小++;
}
}
返回0;
}

使用
fgets
将该行读入缓冲区,我想您必须查找单词分隔符,然后反转各个单词。使用
fgets
将该行读入缓冲区,我想您必须查找单词分隔符,然后反转各个单词。非常感谢,我不知道for循环:for(;;)的那种用法。非常感谢,我不知道for循环:for(;;)的那种用法。