【发布时间】:2016-04-03 04:14:39
【问题描述】:
我正在创建一个反转每一行输入的程序。
这是我的代码:
#include <stdio.h>
#include <string.h>
int main()
{
char c[100];
while((fgets(c,100,stdin)) != NULL)
{
c[strlen(c) - 1] = '\0';
for(int i=strlen(c); i>=0; i--)
{
printf("%c",c[i]);
}
}
}
我的测试输入:
abc 123
lorem ipsum
dolor sit amet
我可以很好地打印第一行:
abc 123
321 cba
但是当我开始输入下一行输入时,它就在反向输入旁边,所以为测试输入运行的完整程序如下所示:
abc 123
321 cbalorem ipsum
muspi meroldolor sit amet
tema tis rolod
什么时候应该是这样的:
abc 123
321 cba
lorem ipsum
muspi merol
dolor sit amet
tema tis rolod
作为一种解决方法,我在输出后再次按 Enter 以便能够在自己的行上输入下一行输入,但我不明白为什么我需要这样做。
【问题讨论】:
-
"reverse the reverse"的程序?听起来你只需要一个打印声明。 -
在
for循环之后,printf("\n");,否则您将在第一行的反向输入的同一行输入下一行。 -
您还应该确保
\neven 在字符串中。如果fgets读取任何字符,它不会返回NULL,除非发生错误。这意味着您可以阅读Hello<EOF>而不是Hello\n<EOF>。由于<EOF>不会在您的缓冲区中,因此您将读到“Hello”,而c[strlen(c) - 1] = 0;将导致您打印“lleH”而不是“olleH”。 -
请不要将文字作为图片发布。使用代码格式将其直接发布在问题中。