在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(;;)的那种用法。