简体   繁体   English

在 C 中循环反转数组

[英]reversing an array in loop in C

I am trying to write a programme that reverses words on each line.我正在尝试编写一个程序来反转每一行的单词。

#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;
}

this code works but it reverses everything I mean for example if I input这段代码有效,但它颠倒了我的意思,例如如果我输入

Hello
my
friends

the output is: output 是:

sdneirf
ym
olleH

But I want an output like this:但我想要一个像这样的 output :

olleH
ym
sdneirf

what is the thing I have to fix?我必须解决什么问题?

You should do printing at end of each lines.您应该在每行的末尾进行打印。

Also return value of fgetc() should be stored to int , not char , because the return value is int and converting it to char may be obstacle when compareing with EOF . fgetc()的返回值也应该存储到int ,而不是char ,因为返回值是int并且在与EOF比较时将其转换为char可能是障碍。

fixed example:固定示例:

#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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM