[英]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.